많은 잠금을 획득 한 경우 어떻게 원자 세트로 잠금을 해제합니까?Java에서 다중 잠금 해제
1
A
답변
2
잠금은 독립 객체 (this question 참조)로 취급되며 Java 언어는 내 지식으로는 JVM에서 (실제로는 원자 적으로 구현되어야하는) 메소드를 제공하지 않습니다 한 번에 여러 개의 잠금을 사용할 수 없습니다.
어쩌면 몇 가지 잠금 장치의 원자 적 릴리스가 더 이상 필요하지 않도록 응용 프로그램을 다시 디자인 할 수 있습니다. (어쩌면 당신은 우리가 더 나은 이해를 얻을 수있는 특정 문제에 대한 자세한 내용을 줄 수 있습니다)
2
JDK의 java.util.concurrent 패키지 설명을 살펴보십시오. 어쩌면 적절한 동기 primitibe를 찾을 수 있습니다. 귀하의 질문에 대한 정보가 더 구체적인 답변을 제공하기에 충분하지 않습니다.
한 가지 간단한 방법 (하지만 어쩌면 가장 효과적인되지 않음) 필요한 모든 잠금 장치, 예를 보호하기 위해 'uberLock'를 사용하는 것입니다:
난 당신이 원자를 방출해야 할 것입니다 이유에 대해 의아해 해요private final Lock uberLock = new ReentrantLock();
void lockAll() {
uberLock.lock();
try {
// call lock() on all needed locks
} finally {
uberLock.unlock();
}
}
5
. 을 원자 적으로 얻는다면, 코드를 작성하는 것이 이상한 짐승이 될지라도 나는 이해할 수 있습니다. 한 가지 확실한 방법은 마스터 잠금 관리자 뒤에있는 모든 코드에서 코드를 숨기고 동기화하는 것입니다. 그러나 어떤 코드가 두 개의 자물쇠가 한꺼번에 릴리스되거나 전혀 릴리스되지 않는다고 걱정합니까?
관련 문제
- 1. Java에서 자동 잠금 - 방법?
- 2. UISlider, 슬라이드 잠금 해제
- 3. Java의 충돌시 잠금 해제
- 4. vba로 양식 객체 잠금 해제/잠금
- 5. 로깅 잠금 다중 스레드 응용 프로그램에서 호출 획득 및 해제
- 6. Java에서 객체 잠금
- 7. 응용 프로그램에서 자동 잠금 해제
- 8. 어디 pthread에서 뮤텍스를 잠금 해제?
- 9. 프로그래밍 방식으로 Windows 잠금 해제
- 10. iPhone 및 접근성 잠금 해제
- 11. SqlMembershipProvider를 사용하여 계정 잠금 해제
- 12. Sharepoint에서 사이트 잠그기/잠금 해제
- 13. 잠금 해제 키 구성 요소
- 14. 업적 잠금 해제 - GameCenter iPhone
- 15. 게임 센터 업적 잠금 해제
- 16. 다중 인스턴스 잠금?
- 17. C에서 마지막 창 잠금/잠금 해제 시간을 찾는 방법 #
- 18. 코코아에서 다른 스레드의 세마포어 잠금 및 잠금 해제
- 19. 실행 명령/스크립트 때 창 잠금/잠금 해제?
- 20. 잠금/잠금 해제 이벤트에 대한 경고를 중지하는 방법은 무엇입니까?
- 21. Ubuntu LInux의 C API를 사용하여 파일 잠금 및 잠금 해제
- 22. Windows XP를 잠금 또는 잠금 해제 할 때 스크립트 실행
- 23. 잠금 해제 구조에 대한 C++ 원자 연산
- 24. C# 4.0 잠금 해제 이미지는 BitmapImage
- 25. 버전없는 리소스로 SVN 작업 복사본 잠금 해제
- 26. 시간 초과 후 C# 자동으로 잠금 해제
- 27. 암호없이 OSX 키 체인을 잠금 해제 하시겠습니까?
- 28. 배치 파일로 Oracle 사용자 잠금 해제
- 29. 파일 r/w 잠금 및 연결 해제
- 30. C에서 Windows 7 데스크톱 잠금 해제 필요
어떤 자물쇠가 있습니까? 파일 시스템? 데이터 베이스? 세마포어? 코드를 획득 한 방법이 유용 할 수도 있습니다. – soulmerge