Java多线程execute如何实现线程间通信

avatar
作者
筋斗云
阅读量:0

在Java中,我们可以使用wait()和notifyAll()方法来实现线程间的通信。这两个方法用于协调多个线程对共享资源的访问。以下是一个简单的示例,展示了如何使用execute方法实现线程间通信:

public class ThreadCommunication {      private static final Object lock = new Object();     private static boolean messageReady = false;      public static void main(String[] args) {         Thread producer = new Thread(new Producer());         Thread consumer = new Thread(new Consumer());          producer.start();         consumer.start();     }      static class Producer implements Runnable {         @Override         public void run() {             synchronized (lock) {                 try {                     System.out.println("生产者准备生产消息");                     lock.wait(); // 等待消费者消费消息                 } catch (InterruptedException e) {                     e.printStackTrace();                 }                  System.out.println("生产者生产消息");                 messageReady = true;                 lock.notifyAll(); // 通知消费者消息已准备好             }         }     }      static class Consumer implements Runnable {         @Override         public void run() {             synchronized (lock) {                 try {                     while (!messageReady) {                         lock.wait(); // 如果没有消息,消费者等待                     }                 } catch (InterruptedException e) {                     e.printStackTrace();                 }                  System.out.println("消费者消费消息");                 messageReady = false;                 lock.notifyAll(); // 通知生产者继续生产消息             }         }     } } 

在这个示例中,我们创建了一个生产者线程和一个消费者线程。生产者线程在生产消息之前需要等待消费者线程消费完之前的消息,而消费者线程在没有消息可读时需要等待生产者线程生产消息。我们使用synchronized关键字和wait()、notifyAll()方法来实现线程间的通信。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!