本文參考葛一鳴《Java高併發程序設計》
多線程的團隊協作:同步控制
synchronized的功能擴展:ReentrantLock重入鎖
java.util.concurrent.locks.ReentrantLock重入鎖可以完全替代synchronized關鍵字。與synchronized先比,重入鎖有着顯示的操作過程,必須手動指定何時加鎖,何時釋放鎖。
-
中斷響應
使用synchronized關鍵字,如果一個線程在等待鎖,在獲得鎖之前會繼續保持等待。
使用重入鎖,線程可以被中斷,即在等待鎖的過程中,程序可以根據需要取消對鎖的請求。 -
鎖申請等待限時
除了接收外部通知中斷,還可以設置申請等待時長,使用tryLock()方法