import java.util.PriorityQueue;
/**
* @author wangpei
* @version 创建时间:2017年4月20日 下午5:01:44 生产者消费者模型的wait,notify实现
*/
public class ShengChanZhe {
private int size = 10;
PriorityQueue<Object> p = new PriorityQueue(size);
public static void main(String[] args) {
ShengChanZhe ac = new ShengChanZhe();
product p = ac.new product();
consume c = ac.new consume();
Thread thread1 = new Thread(p);
Thread thread2 = new Thread(c);
thread1.start();
thread2.start();
}
class product implements Runnable {
public product() {
}
@Override
public void run() {
synchronized (p) {
while (true) {
if (p.size() == size) {
try {
p.wait();
} catch (InterruptedException e) {
p.notify();
e.printStackTrace();
}
}
p.offer(1);
System.out.println("我生产出了一个元素");
p.notify();
}
}
}
}
class consume implements Runnable {
@Override
public void run() {
synchronized (p) {
while (true) {
if (p.size() == 0) {
try {
p.wait();
} catch (InterruptedException e) {
p.notify();
e.printStackTrace();
}
}
p.poll();
System.out.println("我消费了一个元素");
p.notify();
}
}
}
}
}