- 每個 Java 對象都有一個內置鎖
- 線程運行到非靜態的 synchronized 同步方法上時,自動獲得實例對象的鎖
- 持有對象鎖的線程才能運行 synchronized 同步方法或代碼塊時
- 一個對象只有一個鎖
- 一個線程獲得該鎖,其他線程就無法獲得鎖,直到第一個線程釋放鎖。任何其他線程都不能進入該對象上的 synchronized 方法或代碼塊,直到該鎖被釋放。
- 釋放鎖是指持鎖線程退出了 synchronized 同步方法或代碼塊
- 類可以同時擁有同步和非同步方法
- 只有同步方法,沒有同步變量和類
- 在加鎖時,要明確需要加鎖的對象
- 線程可以獲得多個鎖
- 同步應該盡量縮小范圍
- Java 自學指南
- Java 面試題匯總PC端瀏覽【點這里】
- Java知識圖譜
- Java 面試題匯總小程序瀏覽,掃二維碼