高并發(fā)(13)-顯式鎖與內(nèi)置鎖

@TOC

前言

上篇文章講解了什原子的操作類,今天就講講并發(fā)中的顯式鎖與內(nèi)置鎖。

什么是顯式鎖與內(nèi)置鎖

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

顯式鎖與內(nèi)置鎖的區(qū)別

1. 可中斷申請

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

2. 嘗試型申請

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

3. 鎖的釋放

synchronized是只要代碼執(zhí)行到同步代碼快之外,就會釋放鎖。
顯示鎖則必須調(diào)用釋放鎖的方法才可以釋放,需要自己處理,通常在finally中釋放鎖

4. 公平鎖

內(nèi)置鎖采用了不公平鎖機(jī)制。
顯示鎖可以執(zhí)行是否使用公平鎖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容