什麼是可重入鎖(ReentrantLock)?

舉例來講明鎖的可重入性 編程

public class UnReentrant{ 併發

Lock lock = new Lock(); spa

public void outer(){ 線程

lock.lock(); 資源

inner(); 開發

lock.unlock(); 同步

} class

public void inner(){ margin

lock.lock(); top

//do something

lock.unlock();

}

}

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

實調用 outer 的線程已經獲取了 lock 可是不能在 inner 中重複利用已經獲取 

的鎖資源這種鎖即稱之爲 不可重入可重入就意味着線程能夠進入任何一個它 

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

synchronized、ReentrantLock 都是可重入的鎖可重入鎖相對來講簡化了併發 

編程的開發

相關文章
相關標籤/搜索