4
在線程2上由線程1調用時,wait()和join()方法都會使線程1等待線程2,有時候或者直到線程2完成。wait(long timeout)和join(long millis)之間的區別?
如果我們使用這些方法的重載版本,即等待(長期超時)和join(long millis)來,然後
在等待(長期超時)的情況下,線程1將成爲可運行通過通知(或通知)或甚至發生超時(以先到者爲準)。
在連接(long millis)的情況下,當線程2完成或發生超時(以先發生者爲準)時,線程2將變爲可運行的。
那麼這兩個實現有什麼區別?我認爲
有些是這些: -
- 對於wait()的,我們需要有我們正在等待在對象上的鎖。對於join(),這些不是必需的。
- 執行wait()後,線程會移除它獲得的鎖,並在鎖再次運行後重新獲得鎖。但加入怎麼辦?如果線程是從同步塊(或方法)執行的,執行連接後線程是否刪除鎖定?
答案在問題中。等待塊,直到通知調用線程。連接塊直到連接的線程完成。沒有涉及加入的鎖定。 – 2012-01-11 11:54:40