假設我有三個線程,T1, T2, T3一個鎖lock和cond一個Resource資源上的一些條件。T1獲得鎖,現在cond.await()由于某些條件而T2獲得該鎖,cond.signal()然后繼續執行lock.unlock(),但有一段時間,T3也試圖獲得鎖,所以它位于 的行lock.lock(),究竟發生了什么?是T2重新獲得鎖還是獲得了鎖,還是T3基于 scheudler 是隨機的?
2 回答

楊__羊羊
TA貢獻1943條經驗 獲得超7個贊
如果您閱讀了文檔,即 的 javadoc ReentrantLock
,它會在第 3 段中專門回答這個問題:
此類的構造函數接受一個可選的公平參數。當 set 時
true
,在爭用情況下,鎖傾向于授予對等待時間最長的線程的訪問權限。否則這個鎖不能保證任何特定的訪問順序。
添加回答
舉報
0/150
提交
取消