亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

雅江县| 抚州市| 高密市| 娄底市| 新津县| 南靖县| 海林市| 绥德县| 神农架林区| 海南省| 桦南县| 蓬莱市| 酉阳| 安图县| 蒙自县| 张北县| 浦北县| 青海省| 太保市| 富阳市| 政和县| 龙山县| 平江县| 宜城市| 遂溪县| 南康市| 濮阳市| 昔阳县| 前郭尔| 青川县| 湘乡市| 肥西县| 繁峙县| 贵德县| 五莲县| 张北县| 大足县| 辽宁省| 喜德县| 平遥县| 景德镇市|