java中多线程中测试某个条件的变化用 if 还是用 while?
来源:互联网 发布:stc单片机引脚 编辑:程序博客网 时间:2024/06/06 10:44
wait和notify方法,有个地方要注意,就是经典的生产者和消费模式,使用wait和notify实现,判断条件为什么要用while而不能使用if呢?其实是因为当线程wait之后,又被唤醒的时候,是从wait后面开始执行,而不是又从头开始执行的,所以如果用if的话,被唤醒之后就不会在判断if中的条件,而是继续往下执行了,如果list只是添加了一个数据,而存在两个消费者被唤醒的话,就会出现溢出的问题了,因为不会在判断size是否==0就直接执行remove了。但是如果使用while的话,从wait下面继续执行,还会返回执行while的条件判断,size>0了才会执行remove操作,所以这个必须使用while,而不能使用if来作为判断。
基于以上认知,下面这个是使用wait和notify函数的规范代码模板:
// The standard idiom for calling the wait method in Java synchronized (sharedObject) { while (condition) { sharedObject.wait(); // (Releases lock, and reacquires on wakeup) } // do action based upon condition e.g. take or put into queue }
0 0
- java中多线程中测试某个条件的变化用 if 还是用 while?
- java 中 if 和 while 的区别
- tips:Java中while的判断条件
- java中if判断条件语句测试代码总结
- js中各种类型的在if条件中是true还是false
- shell中if判断条件中使用[],[[]],(())还是test,let的比较
- Java中条件语句和if-else的嵌套原则
- java中模拟#if条件编译
- java生产者消费者PV操作为中,wait判断条件为何是while不是if疑惑解答
- 在while的条件中定义变量
- PHP中if条件语句的用法
- perl中if的匹配条件
- js中if的条件判断
- jst中,if的判断条件
- 【shell】脚本中if条件的判断
- js中if条件的真假
- if条件中变量的值
- js 中 的 if使用条件
- 机器学习笔记(五)模型评估方法
- Jmeter搭建
- mysql主从复制原理和注意事项
- bootstrap入门上手
- java使用DateUtils对日期进行数学运算
- java中多线程中测试某个条件的变化用 if 还是用 while?
- CSDN写博客自动同步代码片问题(博客添加的代码发布后却没有在CODE上查看代码片)
- 多线程实现多客户端通信
- K9K8G08U0B-PIB0 1G用512MBMT29F4G替代驱动修改
- wxWidgets学习笔记之1:“hello,world”
- udp协议基础
- Android 6.0系统音量相关小知识点
- 350. Intersection of Two Arrays II
- POI结构与常用类