wait/notifyAll实现生产者消费者模型仿真
来源:互联网 发布:25端口是什么 编辑:程序博客网 时间:2024/05/29 19:30
package webapp;import java.util.Date;import java.util.LinkedList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;public class ExploreWait { public static void addProducer(ExecutorService exec, List<String> list) { exec.execute(new Runnable() { @Override public void run() { while (!Thread.currentThread().isInterrupted()) { synchronized (list) { while (list.size() == 10) { try { System.out.println("please wait to produce..."); list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } int size = list.size(); Date d = new Date(); String rs = "produced at:[" + d + "],[size=" + (size + 1) + "]"; list.add(rs); System.out.println(rs); list.notifyAll(); } Thread.yield(); } } }); }; public static void addConsumer(ExecutorService exec, List<String> list) { // consumer exec.execute(new Runnable() { @Override public void run() { while (!Thread.currentThread().isInterrupted()) { synchronized (list) { while (list.size() == 0) { try { System.out.println("please wait to consume..."); list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } String str = ((LinkedList<String>)list).pollFirst(); System.out.println("consumed at[" + new Date() + "],comsumed:" + str + ",current size" + list.size()); list.notifyAll(); } Thread.yield(); } } }); }; public static void main(String[] args) { ExecutorService exec = Executors.newCachedThreadPool(); List<String> list = new LinkedList<>(); addProducer(exec, list); addConsumer(exec, list); addProducer(exec, list); addConsumer(exec, list); try { TimeUnit.SECONDS.sleep(3); System.exit(0); } catch (InterruptedException e) { e.printStackTrace(); } }}
0 0
- wait/notifyAll实现生产者消费者模型仿真
- 使用wait和notifyAll实现生产者消费者模型
- 传统消费者、生产者模型 syncrinized和Object的wait,notifyAll实现
- wait与notifyAll实现简单的生产者消费者模式
- 用wait和notify/notifyAll实现生产者消费者模式
- java wait notifyAll 生产者 消费者 BlockingDeque
- java 多线程之 wait(),notify(),notifyAll()以及经典的生产者消费者模型
- java 多线程之 wait(),notify(),notifyAll()以及经典的生产者消费者模型
- 多线程执行多类型任务(线程通信wait/notify(notifyAll)):生产者消费者模型(一)
- 多线程执行多类型任务(线程通信wait/notify(notifyAll)):生产者消费者模型(二)
- Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- 在Java中正确使用wait, notify和notifyAll – 以生产者消费者模型为例
- wait,notify,非阻塞队列实现生产者,消费者模型
- java并发学习笔记(一):wait() notifyAll() 生产者 消费者
- 生产者-消费者模型实现
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- linux文件压缩与解压
- 挑剔的小杜
- 封装http请求返回统一json格式数据的网络操作
- hdu 5289 Assignment
- sscanf函数用法详解
- wait/notifyAll实现生产者消费者模型仿真
- poj2421
- poj 2762 Going from u to v or from v to u?
- 微信投票刷票的方法
- 利用WIFI(不用数据线)连接Android手机进行调试
- Snail—UI学习之UIImage及UIImageView
- Java对象生命周期
- NYOJ 35 表达式求值
- SDNU 1141.Greatest Number【山东省第一届ACM】【7月22】