@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í)行是否使用公平鎖。