您的位置:首页 > 编程语言 > Java开发

java线程同步wait()外的判断必须是while

2015-03-09 10:35 204 查看
在java线程中,经常遇到这样的代码:
synchronized(obj){
while(a==1){
lock.wait();
}
}

现在的问题是为什么用while而不用if.

因为线程同步必需保证获得锁后从上到下完整的执行,如wait()期间,另外线程notify()后,不能保证获得锁后条件是否成立,换句话说在另外线程notyfy()之后和上面的代码线程再获得锁之前,这时条件破坏,程序就出现了bug.为了避免这个bug出现,而用while不用if.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 线程