wait notify的信号丢失有关问题
wait notify的信号丢失问题T1:synchronized(sharedMonitor){sharedMonitor.notify()}T2:while(someCondit
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放在最前。