标签:available public produced 生产者 消费者
最近学习java多线程有点迷糊,经过一天的整理,知道了什么是生产者,什么是消费者,以及消费者与生产者的关系:
在 Person类中是一个实体没有具体的对象,靠Input传入,Output读出,只有当Input有传入后,才能被Output读出,因此对呀Input和Output,要上一把同样的锁,synchronized将两个线程同步。
wait(),notify(),notifyAll()都是继承至上帝类的:下面是生产者消费者的代码
//生产/消费者模式
public class Basket {
Lock lock = new ReentrantLock();
// 产生Condition对象
Condition produced = lock.newCondition();
Condition consumed = lock.newCondition();
boolean available = false;
public void produce() throws InterruptedException {
lock.lock();
try {
if (available) {
produced.await(); // 放弃lock进入睡眠
}
System.out.println("Apple produced.");
available = true;
consumed.signal(); // 发信号唤醒等待这个Condition的线程
} finally {
lock.unlock();
}
}
public void consume() throws InterruptedException {
lock.lock();
try {
if (!available) {
consumed.await(); // 放弃lock进入睡眠
}
/* 吃苹果 */
System.out.println("Apple consumed.");
available = false;
produced.signal(); // 发信号唤醒等待这个Condition的线程
} finally {
lock.unlock();
}
}
}
本文出自 “javaSE与android” 博客,谢绝转载!
标签:available public produced 生产者 消费者
原文地址:http://sly920224.blog.51cto.com/6958550/1643663