一、加鎖和釋放鎖的原理
現象、時機、深入jvm看字節碼
現象:每一個類的實例對應一把鎖,每個被Synchronized修飾的方法 都必須首先獲得調用該方法的類的實例的鎖 方能執行。否則線程阻塞,而這個方法獨佔了這把鎖,直到該方法返回或者拋出異常才能釋放。
獲取和釋放鎖的時機:內置鎖,線程在進入同步代碼塊之前會自動獲得這個鎖,並且在退出這個同步代碼塊會自動釋放。獲得這個內置鎖的唯一途徑就是進入到這個鎖
二、可重入原理
加鎖次數計數器
三、保證可見性原理
內存模型
現象、時機、深入jvm看字節碼
現象:每一個類的實例對應一把鎖,每個被Synchronized修飾的方法 都必須首先獲得調用該方法的類的實例的鎖 方能執行。否則線程阻塞,而這個方法獨佔了這把鎖,直到該方法返回或者拋出異常才能釋放。
獲取和釋放鎖的時機:內置鎖,線程在進入同步代碼塊之前會自動獲得這個鎖,並且在退出這個同步代碼塊會自動釋放。獲得這個內置鎖的唯一途徑就是進入到這個鎖
加鎖次數計數器
內存模型