搜尋

首頁  >  問答  >  主體

java - wait(),notify(),notifyAll() T2 start! T2 end! T1 start! 為什麼會阻塞

雷雷
PHP中文网PHP中文网2804 天前952

全部回覆(2)我來回復

  • PHP中文网

    PHP中文网2017-04-18 10:55:24

    rb5 的 object.notify(); 呼叫時 rb4 還沒有進入 wait 狀態,因為還在等待鎖。執行緒 start 不代表馬上會自行 run(),也就是說後 start() 的執行緒的 run() 很有可能會先執行。

    回覆
    0
  • 迷茫

    迷茫2017-04-18 10:55:24

    rb4在运行获得object的对象锁,输出T1 start!,然后调用wait(),该方法会让rb4挂起,同时释放锁,阻塞。 这时候rb5获得锁,输出T2 start!。然后调用object.notify();,虽然这里打算让rb4运行,但是rb5的锁并没有释放,所以rb4还是处于阻塞。 rb5还是继续运行,输出T2 end!rb5运行结束,释放锁, rb4运行输出T1 end!

    回覆
    0
  • 取消回覆