舉例來講明鎖的可重入性 編程
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 都是可重入的鎖,可重入鎖相對來講簡化了併發
編程的開發。