可重入特性
一個線程可以多次執行synchronized,重複獲取同一把鎖。
可重入原理
synchronized的鎖對象中有一個計數器(recursions變量)會記錄線程獲得幾次鎖.
可重入的好處
- 可以避免死鎖
- 可以讓我們更好的來封裝代碼
小結
synchronized是可重入鎖,內部鎖對象中會有一個計數器記錄線程獲取幾次鎖啦,在執行完同步代碼塊時,計數器的數量會-1,知道計數器的數量爲0,就釋放這個鎖。
不可中斷特性
什麼是不可中斷
一個線程獲得鎖後,另一個線程想要獲得鎖,必須處於阻塞或等待狀態,如果第一個線程不釋放鎖,第二個線程會一直阻塞或等待,不可被中斷。
synchronized是不可中斷,處於阻塞狀態的線程會一直等待鎖。
小結:
不可中斷是指,當一個線程獲得鎖後,另一個線程一直處於阻塞或等待狀態,前一個線程不釋放鎖,後一個線程會一直阻塞或等待,不可被中斷。
synchronized屬於不可被中斷
Lock的lock方法是不可中斷的
Lock的tryLock方法是可中斷的