0
嗨,我已經閱讀了關於Java中的ReadWriteLock,但我不知道我已經掌握了它的reentrance部分。 這裏是僅使用一個主線程來顯示重入Java ReadWriteLock再入
public class Locks {
public static void main(String[] args) {
ReadWriteLock lock = new ReentrantReadWriteLock();
lock.writeLock().lock();
lock.readLock().lock();
System.out.println("Reentrance acheieved");
lock.readLock().unlock();
lock.writeLock().unlock();
}
}
兩次短暫代碼示例和第二示例
public class Locks {
public static void main(String[] args) {
ReadWriteLock lock = new ReentrantReadWriteLock();
lock.readLock().lock();
lock.writeLock().lock();
System.out.println("Reentrance acheieved");
lock.writeLock().unlock();
lock.readLock().unlock();
}
}
在執行系統輸出而不是在第二個中的第一個,這是爲什麼那?兩個鎖都是通過同一個線程獲得的,所以我們在這裏有一個再入境的情況,但是隻有在首先獲得寫鎖時才能實現入口,這是奇怪的,因爲在非重入情況下,文檔說寫操作是所有其他操作(無論是寫入還是讀取)。
的可能的複製【JAVA ReentrantReadWriteLocks - 如何安全地獲取寫鎖(http://stackoverflow.com/questions/464784/java-reentrantreadwritelocks-how-to-safely-acquire-write-lock) – shmosel