ReentrantReadWriteLock.writeLock()을 보유한 스레드가 캐치되지 않은 예외로 인해 실행을 중지하면 잠금이 해제 되었습니까, 아니면 보유되어 있고 다른 모든 스레드가 이제 교착 상태에 있습니까?ReentrantReadWriteLock으로 잠금을 보유한 스레드가 실패하면 어떻게됩니까?
1
A
답변
3
"실패"는 캐치되지 않은 예외가 스레드의 run
메서드 맨 위에서 전파되어 실행을 중지시키는 것을 의미합니다.
스레드가 finally
블록을 올바르게 사용하면 writeLock
이 스택을 백업 할 때 잠금 해제됩니다.
그러나 스레드가 unlock()
을 호출하지 않은 경우 스레드가 더 이상 실행되지 않더라도 해당 모니터를 보유하므로 - 다른 스레드는 교착 상태가됩니다.
리소스를 올바르게 가져오고 릴리스하는 것이 중요한 이유입니다. synchronized
블록을 사용하는 이유는 특정 잠금 기능이 필요하다는 것을 입증 할 때까지/출시되지 않아야하기 때문입니다. (귀하의 경우 별도의 읽기/쓰기 잠금이 필요하다고 확신합니다. 여기에서 좀 더 일반적인 점을 말씀드립니다.)
0
"Explicit Lock"을 사용하여 릴리스 할 때 try-finally 블록을 사용해야합니다 당신이 획득 한 모든 자물쇠.
이것은 동기화를 사용하는 경우의 주요 차이점입니다.
관련 문제
- 1. 열기가 실패하면 어떻게됩니까?
- 2. 트리거가 실패하면 어떻게됩니까?
- 3. 스레드가 뮤텍스에서 처리되면 어떻게됩니까?
- 4. 스레드가 예외를 throw하면 어떻게됩니까?
- 5. Nhibernate 세션 팩토리를 작성하는 데 실패하면 어떻게됩니까?
- 6. GlobalLock()을 호출하면 GlobalUnlock() 호출에 실패하면 어떻게됩니까?
- 7. 스레드가 안전하지 않은 .NET 큐 개체는 어떻게됩니까?
- 8. 여러 스레드가 ReentrantReadWriteLock에 액세스하려고하면 어떻게됩니까?
- 9. 프로세스에서 하나의 스레드가 충돌하면 어떻게됩니까?
- 10. 하나의 스레드가 차단되면 다른 스레드는 어떻게됩니까?
- 11. 데이터베이스 오류 처리 : 서비스 외부로 호출해야하며 트랜잭션이 실패하면 어떻게됩니까?
- 12. 스레드가 C#에서 개체에 대한 잠금을 보유하고 있는지 테스트하는 방법?
- 13. 스레드가 버스 오류로 종료 될 때 세마포 잠금을 방지하려면 어떻게합니까?
- 14. 어떤 Java 스레드가 잠금을 보유하고 있는지 프로그램 적으로 결정
- 15. JVM에서 처리하는 객체 잠금을 대기하여 스레드가 차단 상태가되는 방법
- 16. NSString에서 보유한 바이트의 UIImage
- 17. DoCmd.SendObject가 실패하면?
- 18. Socket.Recieve 실패하면 멀티 스레드
- 19. 권한을 보유한 삭제하는 (그리고뿐만 아니라)
- 20. 두 수준의 잠금을 구현
- 21. 동기화가 객체 잠금을 만듭니다.
- 22. 뮤텍스 잠금을 사용해야합니까?
- 23. 둘 이상의 스레드가 싱글 톤 객체에 액세스하려고하면 어떻게됩니까
- 24. 스레드가 절전 모드로 일시 정지 된 후에는 어떻게됩니까?
- 25. C# .NET에서 대리자를 사용하면 .Net 스레드 풀에서 스레드가 부족하면 어떻게됩니까?
- 26. 다른 스레드가 해당 변수를 사용하는 동안 객체를 잠그면 어떻게됩니까?
- 27. Monitor는 어떻게됩니까? 일치하는 Monitor없이 종료하십시오. 끝내기?
- 28. 잠금을 할당합니까
- 29. MPMoviePlayerViewController, 실패하면 어떻게해야합니까?
- 30. google.load가 실패하면 어떻게해야합니까?