(新思路)生产者消费者模型(condition的解决方法)
来源:互联网 发布:c罗皇马 知乎 编辑:程序博客网 时间:2024/06/07 08:03
需求:
一个固定容量的同步容器,拥有put和get方法,还有getCount方法
能够支持两个生产者和10个消费者线程的阻塞调用
使用wait和notify/notifyAll实现
方法一:wait和notify的方法
思考:
1.第8行和第21行为什么用while不用if?
生产者1和生产者2判断满了---》wait---》消费者消费了一个---》生产者1继续执行,add了一个对象又满了----》生产者2从while继续执行(再次判断是否满),再决定是否add。(如果用if,生产者2唤醒后不判断是否满了,直接add,list会溢出)
2.第17行和第31行为什么用notifyAll不用notify?
如果用notify,生产者满了--》wait----》只唤醒一个线程,不小心唤醒了生产者,继续wait---》没有其它线程被唤醒---》死锁
如果用notifyAll,生产者满了--》wait---》唤醒所有线程,如果唤醒的还是生产者,继续wait--》消费者线程拿到锁执行
方法二:lock和condition方法
可以精确控制唤醒生产者还是消费者线程
阅读全文
1 0
- (新思路)生产者消费者模型(condition的解决方法)
- (新思路)生产者消费者模型2(BlockingQueue的无锁解决方法)
- 生产者消费者模型(使用lock.condition进行分组唤醒)
- 【Java多线程】-Condition使用(生产者-消费者)
- 经典的生产者消费者模型(一)
- 经典的生产者消费者模型(二)
- 生产者-消费者模型(Java)
- 生产者消费者模型(一)
- 生产者-消费者问题(condition)Java实现
- 多生产者多消费者问题(Lock接口、Condition接口)
- 使用Condition的生产者消费者模式
- 使用Lock的Condition实现生产者消费者
- POSIX下的信号量(生产者&消费者模型)
- 使用Lock和Condition实现生产者消费者模型
- 使用ReentrantLock和Condition实现生产者消费者模型
- 生产者--消费者模型(同步方式)
- 生产者--消费者模型(线程锁方式)
- Java线程(九)-生产者消费者模型
- 摄像机对物体(角色)的跟随—简短
- cocos creator上线appstore的脚印
- Node.js Electron windows下安装与打包成 exe
- 【九度OJ】1199:找位置
- Bootstrap组件学习笔记(七)——列表组和面板
- (新思路)生产者消费者模型(condition的解决方法)
- Java开发规范(三)
- 微信公众帐号开发教程第3篇-开发模式启用及接口配置
- CodeForces 96 A.Football(水~)
- 13.数组
- 微信公众帐号开发教程第2篇-微信公众帐号的类型(普通和会议)
- java线程池原理讲解及常用创建方式
- HDU
- Reshape the Matrix