高併發(13)-顯式鎖與內置鎖

前言

上篇文章講解了什原子的操作類,今天就講講併發中的顯式鎖與內置鎖。

什麼是顯式鎖與內置鎖

多線程中,JDK提供了內置鎖(synchronized)和顯式鎖(ReentrantLock)兩種鎖。

顯式鎖與內置鎖的區別

1. 可中斷申請

synchronized若是其他線程持有鎖,新的線程獲取鎖就會被掛起,等待鎖的釋放,這個過程是無法中斷的
顯式鎖則提供了可以中斷這個申請

2. 嘗試型申請

先是鎖提供能嘗試獲取鎖的方法,如果未獲取到,則會返回false, 否則返回true.
內置鎖則沒有提供這個功能,只要使用鎖,沒有獲取之前就不會中斷線程。

3. 鎖的釋放

synchronized是隻要代碼執行到同步代碼快之外,就會釋放鎖。
顯示鎖則必須調用釋放鎖的方法纔可以釋放,需要自己處理,通常在finally中釋放鎖

4. 公平鎖

內置鎖採用了不公平鎖機制。
顯示鎖可以執行是否使用公平鎖。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章