黑马程序员技术交流社区
标题:
多线程问题
[打印本页]
作者:
谭荣强
时间:
2014-4-16 23:01
标题:
多线程问题
老毕说while循环中,线程被唤醒之后会重新判断标记,为什么不会往下执行,而是返回去判断标记?,为什么if会往下执行?
public synchronized void consume() {
while(!flag){
try {
wait();//t1线程等待,t2线程等待。
} catch (InterruptedException e) {
e.printStackTrace();
}
}
作者:
月光海
时间:
2014-4-16 23:07
本帖最后由 月光海 于 2014-4-16 23:08 编辑
额,那这个就是while的用法了,while是一直执行到条件为false才会不再执行里面的语句,如果里面的线程醒来再去判断flag,如果条件还是true,那么他还会继续等待,你看下下面的代码,理解while的作用就明白了,if不是循环语句,执行完就继续执行,while是循环语句,所以必然会执行的
int i=9;
while(i>0)
{
i--;
}
复制代码
作者:
shi0000
时间:
2014-4-16 23:28
是么?你说是的执行while的{}中的wait后的代码,还是{}后的代码,
如果是{}中的,就是唤醒后,接着走,不去判断flag。等{}中的代码都结束后,才会返回继续判断的
作者:
谭荣强
时间:
2014-4-17 00:14
明白了,我理解错了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2