阅读量: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()方法来实现线程间的通信。