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