摘要: 重入鎖(ReentrantLock)是一種遞歸無(wú)阻塞的同步機(jī)制。以前一直認(rèn)為它是synchronized的簡(jiǎn)單替代,而且實(shí)現(xiàn)機(jī)制也不相差太遠(yuǎn)。不過(guò)最近實(shí)踐過(guò)程中發(fā)現(xiàn)它們之間還是有著天壤之別。
以下是官方說(shuō)明:一個(gè)可重入的互斥鎖定 Lock,它具有與使用 synchronized 方法和語(yǔ)句所訪問(wèn)的隱式監(jiān)視器鎖定相同的一些基本行為和語(yǔ)義,但功能更強(qiáng)大。ReentrantLock 將由最近成功獲得鎖定,并且還沒(méi)有釋放該鎖定的線程所擁有。當(dāng)鎖定沒(méi)有被另一個(gè)線程所擁有時(shí),調(diào)用 lock 的線程將成功獲取該鎖定并返回。如果當(dāng)前線程已經(jīng)擁有該鎖定,此方法將立即返回??梢允褂?isHeldByCurrentThread() 和 getHoldCount() 方法來(lái)檢查此情況是否發(fā)生。
閱讀全文