阿里P8大牛總結的Java鎖機制入門筆記,堪稱教科書式天花板!
前言
鎖機制無處不在,鎖機制是實現(xiàn)線程同步的基礎,鎖機制并不是Java鎖獨有的,其他各種計算機語言中也有著鎖機制相關的實現(xiàn),數(shù)據(jù)庫中也有鎖的相關內容。這篇文章就是從Java入手,深入學習、理解Java中的鎖機制,提升Java并發(fā)編程能力。
1、樂觀鎖

樂觀鎖是一種樂觀思想,假定當前環(huán)境是讀多寫少,遇到并發(fā)寫的概率比較低,讀數(shù)據(jù)時認為別的線程不會正在進行修改(所以沒有上鎖)。寫數(shù)據(jù)時,判斷當前 與期望值是否相同,如果相同則進行更新(更新期間加鎖,保證是原子性的)。
Java 中的樂觀鎖: CAS,比較并替換,比較當前值(主內存中的值),與預期值(當前線程中的值,主內存中值的一份拷貝)是否一樣,一樣則更新,否則繼續(xù)進行 CAS 操作。
如上圖所示,可以同時進行讀操作,讀的時候其他線程不能進行寫操作。
2、悲觀鎖

3、自旋鎖

4、可重入鎖(遞歸鎖)

5、讀寫鎖

6、公平鎖

7、非公平鎖

8、共享鎖

9、獨占鎖

10、重量級鎖

11、輕量級鎖

12、偏向鎖

13、分段鎖

14、互斥鎖

15、同步鎖

16、死鎖

17、鎖粗化

18、鎖消除

19、synchronized

20、Lock和synchronized的區(qū)別

21、ReentrantLock 和synchronized的區(qū)別

Java鎖機制筆記(附圖解+思路分析)
獲取方式↓↓↓
添加VX備注【612】即可免費獲取
喜歡小編的文章可以點點關注!小編不定期的分享最新Java筆記和面試真題
【JAVA面試題專欄】
1、2022年Java后端面試手冊,助力金三銀四,吃透25個技術棧!
2、2022年金三銀四,Java后端開發(fā)最全面試攻略,程序員求職必看!
評論
圖片
表情
