A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© MarsBong 中级黑马   /  2016-9-7 01:02  /  373 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在线程间通信问题时使用if或者while进行判断,是有区别的,具体如下:
f语句是在哪里等待就在哪里起来,再次起来时不会再经过if判断,而是直接唤醒线程进行执行
while语句,首先经过判断,符合条件才会被唤醒
使用notify是随机唤醒单个线程,这样的弊端,结合if可能产生某个线程一直不能执行,结合while可能产生执行不下去,一直唤醒不符合条件的线程
解决方案:使用notifyAll()唤醒所有线程,再结合while进行判断,弊端是每次都会唤醒所有的线程

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马