什么是可重入鎖(ReentrantLock)?


舉例來說明鎖的可重入性

public class UnReentrant{

Lock lock = new Lock();

public void outer(){

lock.lock();

inner();

lock.unlock();

}

public void inner(){

lock.lock();

//do something

lock.unlock();

}

}

outer 中調用了 inner,outer 先鎖住了 lock,這樣 inner 就不能再獲取 lock。其

實調用 outer 的線程已經獲取了 lock 鎖,但是不能在 inner 中重復利用已經獲取

的鎖資源,這種鎖即稱之為 不可重入可重入就意味着:線程可以進入任何一個它

已經擁有的鎖所同步着的代碼塊。

synchronized、ReentrantLock 都是可重入的鎖,可重入鎖相對來說簡化了並發

編程的開發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM