import java.util.PriorityQueue;
/** * @author wangpei * @version 创建时间:2017年4月20日 下午5:01:44 生产者消费者模型的wait,notify实现 */
public class ShengChanZhe {
private int size = 10;// 初始化非阻塞队列的长度为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();
}
}
}
}
}
相关文章
- [并发编程 - socketserver模块实现并发、[进程查看父子进程pid、僵尸进程、孤儿进程、守护进程、互斥锁、队列、生产者消费者模型]
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- 母鸡下蛋实例:多线程通信生产者和消费者wait/notify和condition/await/signal条件队列
- 高并发:阻塞队列 实现生产者-消费者模式
- phread_con_wait和pthread_mutex_lock实现的生产者消费者模型
- 使用阻塞队列BlockingQueue实现生产者消费者
- 使用阻塞队列实现生产者和消费者问题
- Java阻塞队列(BlockingQueue)实现 生产者/消费者 示例
- java wait()/notify() 实现生产者消费者模式详解
- 使用队列queue实现一个简单的生产者消费者模型