我在"Thinking in java"中阅读了以下代码.
synchronized(obj)
{
while (condition_not_matched)
{
obj.wait();
}
//continue
dosomething();
}
Run Code Online (Sandbox Code Playgroud)
我的想法:
使用"if"是可以的,因为"等待"意味着它必须得到obj的锁定监视器,并且这里只能执行一个线程.
(1)为什么这里使用"while(condition)"而不是"if"?
(2)执行"obj.wait()"时发生了什么?currrent线程是否释放了"obj"的锁定?
(3)当另一个线程执行"obj.notify()"时,前一个线程发生了什么(它是否重新获取了obj的锁定?如果是,它必须是condition_not_matched,所以"如果"就足够了.)
我是错误?