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

溫馨提示×

溫馨提示×

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

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

java中怎么實現同步

發布時間:2021-06-17 11:53:51 來源:億速云 閱讀:151 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關java中怎么實現同步,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

(1)公平鎖/非公平鎖

公平鎖,是指按照線程申請的順序獲取鎖。

非公平鎖,是指不是按照線程申請的順序獲取鎖,有可能后申請的線程反而先獲取到鎖,假如先來的線程一直獲取不到鎖,會造成鎖饑餓現象。

ReentrantLock中可以通過構造方法指定是否為公平鎖,默認為非公平鎖,非公平鎖的優點在于吞吐量大。

synchronized無法指定為公平鎖,一直都是非公平鎖。

(2)可重入鎖

可重入鎖,是指一個線程獲取鎖之后再嘗試獲取鎖時會自動獲取鎖,可重入鎖的優點是避免死鎖。

ReentrantLock和synchronized都是可重入鎖。

(3)獨享鎖/共享鎖

獨享鎖,是指鎖一次只能被一個線程持有。

共享鎖,是指鎖一次可以被多個線程持有。

ReentrantLock和synchronized都是獨享鎖,ReadWriteLock的讀鎖是共享鎖,寫鎖是獨享鎖。

(4)互斥鎖/讀寫鎖

與獨享鎖/共享鎖的概念差不多,是獨享鎖/共享鎖的具體實現。

ReentrantLock和synchronized都是互斥鎖

ReadWriteLock是讀寫鎖

(5)樂觀鎖/悲觀鎖

悲觀鎖,是指認為對于同一個數據的并發操作必然會發生修改,即使不會發生修改也這么認為,所以一定要加鎖。

樂觀鎖,是指認為對于同一個數據的并發操作不一定會發生修改,在更新數據的時候,嘗試去更新數據,如果失敗就不斷嘗試。

悲觀鎖適用于寫操作多的場景,樂觀鎖適用于讀操作多的場景。

(6)分段鎖

分段鎖,是一種鎖的設計思路,它細化了鎖的粒度,主要運用在ConcurrentHashMap中,實現高效的并發操作,當操作不需要更新整個數組時,就只鎖數組中的一項就可以了。

(7)偏向鎖/輕量級鎖/重量級鎖

這三個鎖主要是針對synchronized進行優化使用的,主要是通過對象監視器在對象頭中的字段來表明的。

偏向鎖,是指一段同步代碼一直被一個線程訪問,那么這個線程會自動獲取鎖,降低獲取鎖的代價。

輕量級鎖,是指當鎖是偏向鎖時,被另一個線程所訪問,偏向鎖會升級為輕量級鎖,這個線程會通過自旋的方式嘗試獲取鎖,不會阻塞,提高性能。

重量級鎖,是指當鎖是輕量級鎖時,當自旋的線程自旋了一定的次數后,還沒有獲取到鎖,就會進入阻塞狀態,該鎖升級為重量級鎖,重量級鎖會使其他線程阻塞,性能降低。

(8)自旋鎖

自旋鎖,是指嘗試獲取鎖的線程不會阻塞,而是循環的方式不斷嘗試,這樣的好處是減少線程的上下文切換帶來的開鎖,提高性能,缺點是循環會消耗CPU。

(9)監視器鎖

synchronized的實現方式,使用monitorenter和monitorexit來實現。

(10)mutex鎖

互斥鎖,LockSupport.part()底層是通過mutex實現的。

看完上述內容,你們對java中怎么實現同步有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

新沂市| 清水县| 灵寿县| 南漳县| 赫章县| 崇州市| 武宣县| 凤阳县| 新和县| 谷城县| 岳池县| 望奎县| 措勤县| 颍上县| 黔江区| 囊谦县| 东台市| 临湘市| 平昌县| 柞水县| 乌鲁木齐市| 平原县| 霍邱县| 福州市| 北宁市| 朝阳市| 静海县| 陵水| 关岭| 九寨沟县| 昌都县| 永登县| 南投县| 伊宁县| 达孜县| 花莲县| 特克斯县| 卫辉市| 驻马店市| 平遥县| 永丰县|