可重入鎖就是乙個執行緒給某個資源上了鎖之後,在不釋放鎖的情況下,繼續對該資源進行上鎖。
那麼可重入鎖有什麼好處呢?
可重入鎖降低了程式設計的複雜性
減少了死鎖的發生
舉個栗子:
public
class
myreentrant
if(index ==10)
}}}}
).start()
;}}
可重入鎖有兩種實現,分別是synchronized和reentrantlock,簡單介紹下兩者的特點:
公平鎖公平鎖很好理解,區別於非公平鎖,非公平鎖即所有等待執行緒進行不公平的cpu時間片競爭,cpu時間片去執行哪個執行緒是不固定和不確定的。公平鎖會考慮到執行緒的等待時間,cpu會優先執行等待時間最長的執行緒。
reentrantlock實現了公平鎖可以順序的控制cpu對執行緒的執行順序。
響應中斷
響應中斷就是乙個執行緒獲取不到鎖,不會一直等,reentrantlock給予乙個中斷回應。以下的死鎖,我們可以通過reentrantlock來中斷執行緒,以解除死鎖。
public
class
test2
}
在這裡我們定義了兩個鎖lock1和lock2。然後使用兩個執行緒thread和thread1構造死鎖場景。正常情況下,這兩個執行緒相互等待獲取資源而處於死迴圈狀態。但是我們此時thread中斷,另外乙個執行緒就可以獲取資源,正常地執行。
每個鎖關聯乙個請求計數器並標記獲取該鎖的執行緒。
計數器為0表示鎖未占用
執行緒請求乙個鎖時,jvm將標記該執行緒,計數器+1
重入時,計數器遞增
當執行緒退出同步方法或者同步**塊時,計數器將遞減
當計數器為0時,jvm認為執行緒對資源釋放了鎖,其他執行緒才能獲取該鎖
注意:計數器的設定本身就有一定的缺陷。
一文帶你了解兩種Transformer文字識別方法
由 堅強是說給別人聽的謊言 提交於 2020 11 27 12 47 35 摘要 受transformer模型的啟發,目前一些學者將該結構應用到文字行識別中,以替代rnn,取得了良好的效果,如在hga str和 srn。當前的文字行識別器為擁有更強的序列語義能力,模型多採用cnn rnn的結構,如目...
一文帶你了解什麼是地磁系統
隨著 網際網路 的概念不斷深入人心,停車系統也被冠上的網際網路 之名,為車主出行和停車市場帶來了變革,地磁技術是我們比較常見的技術。今天們就聊聊地磁停車系統。原理在初中物理我們學過,地球是乙個巨大的磁場,在地球上的任意乙個地方,磁場是相對穩定的,當有鐵質等金屬物體進入磁場的時候,該磁場就會造成擾動。...
一文帶你了解場效電晶體
場效電晶體分類 結型場效電晶體和絕緣柵型場效電晶體 場效電晶體電路符號 場效電晶體的三個引腳分別表示為 g 柵極 d 漏極 s 源極 注 場效電晶體屬於電壓控制型元件,又利用多子導電故稱單極型元件,且具有輸入電阻高,雜訊小,功耗低,無二次擊穿現象等優點。場效應電晶體的優點 具有較高輸入電阻高 輸入電...