在Java中,可以使用wait()
和notify()
或notifyAll()
方法来实现生产者-消费者模式。这些方法是Object
类的一部分,用于线程间的通信。下面是一个简单的生产者-消费者模式示例:
- 首先,创建一个共享资源类,例如一个缓冲区(Buffer):
public class Buffer { private int data; private boolean empty = true; public synchronized void put(int data) { while (!empty) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.data = https://www.yisu.com/ask/data;>
- 创建生产者线程类:
public class Producer implements Runnable { private Buffer buffer; public Producer(Buffer buffer) { this.buffer = buffer; } @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println("Produced: " + i); buffer.put(i); } } }
- 创建消费者线程类:
public class Consumer implements Runnable { private Buffer buffer; public Consumer(Buffer buffer) { this.buffer = buffer; } @Override public void run() { for (int i = 0; i < 10; i++) { int data = https://www.yisu.com/ask/buffer.get();"Consumed: " + data); } } }
- 在主程序中创建生产者和消费者线程,并启动它们:
public class Main { public static void main(String[] args) { Buffer buffer = new Buffer(); Thread producerThread = new Thread(new Producer(buffer)); Thread consumerThread = new Thread(new Consumer(buffer)); producerThread.start(); consumerThread.start(); } }运行上述代码,你将看到生产者和消费者线程交替执行,生产者将数据放入缓冲区,消费者从缓冲区中取出数据。这就是一个简单的生产者-消费者模式实现。