91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

synchronized與ReentrantLock的區別是什么

發布時間:2021-07-06 18:12:01 來源:億速云 閱讀:142 作者:Leah 欄目:大數據

synchronized與ReentrantLock的區別是什么,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

相同點:

原子性,可見性,有序性,可重入性

不同點:

  1. synchronized是非公平鎖,ReentrantLock可以創建公平與非公平鎖。

  2. synchronized無法中斷一個正在等待獲取鎖的線程,ReentrantLock使用lockInterruptibly可以感知中斷獲取鎖的操作。

  3. ReentrantLock可以實現非塊結構的加鎖。

  4. ReentrantLock使用tryLock(time)來實現定時鎖,也可避免死鎖。

  5. 在實現生產者消費者模型時,synchronized加鎖,只能喚醒所有等待鎖的線程Object.notifyAll()。ReentrantLock可以使用condition減小等待鎖的粒度,在喚醒線程時就可以針對條件隊列來喚醒線程了Condition.signal(),提高效率。

  6. 在等待鎖時,使用synchronized的線程進入的是BLOCKED狀態,使用ReentrantLock的線程進入的是WAITING狀態。

選擇:

  1. ReentrantLock并不是一種替代內置鎖的方法,而是當內置加鎖機制不適用時,作為一種可選擇的高級功能。

  2. Java5時,ReentrantLock比內置鎖可以提供更好的競爭性能,但在Java6后,使用了改善后的算法來管理內置鎖,導致兩者的差異越來越小,所以還是優先使用內置鎖,僅當內置鎖不能滿足要求時,才可以考慮使用ReentrantLock。

PS:

  1. 在公平的鎖上,線程將按照它們發出請求的順序來獲得鎖,但在非公平的鎖上,則允許插隊:當一個線程請求非公平鎖時,如果在發出請求的同時該鎖狀態變為可用,那么這個線程將跳過隊列中所有等待線程并獲得這個鎖。拿一個生活中的場景舉例子,在我晚上經常去的一家肉餅店,肉餅出的很慢,我們都需要付錢拿號等待,結果有個顧客過來點餐,他正好點到肉餅的時候肉餅出鍋了,如果是非公平的場景,店員無視我們前面等待的顧客,就直接把肉餅給這位顧客了。

  2. 產生死鎖的4個必要條件:互斥條件;請求與保持條件;不剝奪條件;循環等待條件;tryLock破壞了不剝奪條件。

看完上述內容,你們掌握synchronized與ReentrantLock的區別是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云南省| 清水县| 西乡县| 咸丰县| 永德县| 洛浦县| 什邡市| 修武县| 宁城县| 泾源县| 偃师市| 乾安县| 华坪县| 涞水县| 巴楚县| 南昌市| 阜新| 德兴市| 虹口区| 黄平县| 应用必备| 四会市| 伊通| 霍林郭勒市| 雷山县| 邢台县| 庆元县| 汝南县| 大关县| 昭平县| 偃师市| 广德县| 萝北县| 寿阳县| 略阳县| 绥江县| 孟津县| 石楼县| 景洪市| 横山县| 厦门市|