안녕하세요, 저는 Java에서 ReadWriteLock에 대해 읽었지만, 그 중 재진입 부분을 파악한 것은 확실하지 않습니다. 여기 가 재입국에게Java ReadWriteLock Reentrance
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();
}
}
표시하는 하나의 메인 쓰레드를 사용하여 두 개의 짧은 코드 예 및 SYSOUT가 아닌 두 번째로 수행하는 첫 번째에서 두 번째 예
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();
}
}
인 이유는 그? 두 잠금 장치는 동일한 스레드에 의해 얻어 져서 여기에 재진입 상황이 있지만, 진입이 불가능한 상황에서 의사가 독서 작업이 모든 다른 작업 (쓰기 또는 읽기).
가능한 복제 [자바 ReentrantReadWriteLocks - 안전하게 쓰기 잠금을 획득하는 방법 (http://stackoverflow.com/questions/464784/java-reentrantreadwritelocks-how-to-safely-acquire-write-lock) – shmosel