1. 可重入性
synchronized的鎖對象中有一個(gè)計(jì)數(shù)器(recursions變量)會記錄線程獲得幾次鎖;
可重入的好處:
- 可以避免死鎖;
- 可以讓我們更好的封裝代碼;
- synchronized是可重入鎖,每部鎖對象會有一個(gè)計(jì)數(shù)器記錄線程獲取幾次鎖,在執(zhí)行完同步代碼塊時(shí),計(jì)數(shù)器的數(shù)量會-1,直到計(jì)數(shù)器的數(shù)量為0,就釋放這個(gè)鎖。
2. 不可中斷性
- 一個(gè)線程獲得鎖后,另一個(gè)線程想要獲得鎖,必須處于阻塞或等待狀態(tài),如果個(gè)線程不釋放鎖,第二個(gè)線程會一直阻塞或等待,不可被中斷;
- synchronized 屬于不可被中斷;
- Lock lock方法是不可中斷的;
- Lock tryLock方法是可中斷的;