一、生产者与消费者
所谓生产者与消费者模式就是通过平衡生产线程与消费线程的工作能力来提高程序整体处理数据的速度…
在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完才能继续生产数据,反之亦然,为了解决这种生产消费能力不均衡的问题,便有了生产者消费者模式。
二、利用通知机制实现生产者消费者模型
下面先从一个简单的例子入手:
package multithread;
public class ProduceAndConsume {
private boolean isProduce = false;
private final Object LOCK = new Object();
private volatile int i = 0;
public void produce() {
synchronized (LOCK) {
if (isProduce) {
try {
LOCK.wait();
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("produce => " + ++i);
isProduce = true;
LOCK.notify();
}
}
}
public void consume() {
synchronized (LOCK) {
if (!isProduce) {
try {
LOCK.wait();
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("consume => " + i);
isProduce = false;
LOCK.notify();
}
}