读书人

wait notify的信号丢失有关问题

发布时间: 2012-12-19 14:13:14 作者: rapoo

wait notify的信号丢失问题

T1:synchronized(sharedMonitor){    sharedMonitor.notify();}T2:while(someCondition){//Point1   synchronized(sharedMonitor){      sharedMonitor.wait();   }}


如果T2对someCondition求值发现为true,在Point1,线程调试器可能切换到了T1,而T1调用notify(),当T2再次执行的时候,会进入wait(),此时notify信号已经错过,因此T2将无限等待这个已经发送过的信号,造成死锁。
解决方法 在T2中把synchronized放在最前。

读书人网 >网络基础

热点推荐