首页 > 图灵资讯 > 技术篇>正文

线程间的同步和通信

2024-11-24 14:27:02

附加内容:

线程间的同步与通信问题: 线程在访问共享数据时可能会互相干扰。

解决方案: 同步方法

synchronized void synchronizedmethod() {
    // código sincronizado
}

同步块:

synchronized (this) {
    // código sincronizado
}

沟通示例:

线程之间使用wait()、notify()和notifyall()进行通信:

class SharedResource {
    private boolean flag = false;

    synchronized void produce() {
        while (flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Producing...");
        flag = true;
        notify();
    }

    synchronized void consume() {
        while (!flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Consuming...");
        flag = false;
        notify();
    }
}

public class ThreadCommunication {
    public static void main(String[] args) {
        SharedResource resource = new SharedResource();

        Thread producer = new Thread(resource::produce);
        Thread consumer = new Thread(resource::consume);

        producer.start();
        consumer.start();
    }
}

结论

  • java 中的多线程编程允许您创建更高效​​的应用程序,尤其是在多核系统上。
  • 使用同步正确管理对共享资源的访问非常重要。
  • thread 类方法和 runnable 接口是处理多任务的强大工具。

线程间的同步和通信

以上就是线程间的同步和通信的详细内容,更多请关注图灵教育其它相关文章!

上一篇 Java 中@Override 的作用是什么?
下一篇 返回列表

文章素材均来源于网络,如有侵权,请联系管理员删除。