함수 a(), b(), c()가 있습니다. 그리고 b()와 c() 실행을 동기화하려고하지만 b()와 c()를 동기화하지 않으려 고합니다 (b()와 c()() 및 b() 병렬 실행 또는 a() 및 c() 병렬 실행은 불가능합니다. Java에서이 문제를 해결할 수 있습니까?한 기능을 다른 기능과 동기화하지만 다른 기능을 동기화하지 않는 방법은 무엇입니까?
0
A
답변
3
당신 같은이 작업을 수행 할 수 있습니다 물론
private final ReadWriteLock rwlock = new ReentrantReadWriteLock();
void a() {
rwlock.writeLock().lock();
try { whatever(); } finally { rwlock.writeLock().unlock(); }
}
void b() {
rwlock.readLock().lock();
try { whatever(); } finally { rwlock.readLock().unlock(); }
}
void c() {
// same as b()
}
이이이 아닌 경우 모두 세 가지 방법 등 클래스 당이 락의 인스턴스가 있는지, 같은 클래스에 있다고 가정한다 정확한 사용 사례에 따라 가시성/선언/등을 조정하십시오.
+0
고마워요! 그것은 내가 필요한 것입니다! –
+0
이 경우 응답을 수락 할 수 있습니다. –
관련 문제
- 1. 병합 상자 기능과 다른 기능을
- 2. 다른 확장 기능을 방해하는 Firefox 확장 기능을 중지하는 방법은 무엇입니까?
- 3. 한 모델에서 다른 모델의 기능을 호출하는 방법은 무엇입니까?
- 4. 다른 프로그램이이를 호출하는 기능을 제공하는 방법은 무엇입니까?
- 5. 다른 컨트롤러에서 컨트롤러의 기능을 호출하는 방법은 무엇입니까?
- 6. JButtons에 다른 기능을 부여하는 방법은 무엇입니까?
- 7. 여러 파일에 다른 기능을 할당하는 방법은 무엇입니까?
- 8. MVC에서 다른 컨트롤러 기능을 호출하는 방법은 무엇입니까?
- 9. SQL의 다른 기능을 구현하는 방법은 무엇입니까?
- 10. 이전 기능과 이후 기능을 다른 기능에서 참조 할 수 있습니까?
- 11. 한 활동의 기능을 다른 활동이나 서비스에서 호출하는 방법은 무엇입니까?
- 12. angularjs에있는 다른 컨트롤러에서 한 컨트롤러의 기능을 호출하는 방법은 무엇입니까?
- 13. 다른 기능을 데이터에 매핑하십시오.
- 14. jQuery가 다른 기능을 죽입니다.
- 15. 목록의 각 행렬의 다른 행에 다른 기능을 적용하는 방법은 무엇입니까?
- 16. 한 클래스의 기능을 다른 클래스에서 사용하기
- 17. 한 기능을 다른 기능으로 가져 오기
- 18. 다른 onPrepare 기능을 기반으로합니다.
- 19. 기능을 실행하고 다른 입력
- 20. 다른 기능을 사용하여 데이터로드
- 21. 같은 기능을 다른 결과
- 22. 다른 쪽에서 활동의 기능을 호출하십시오.
- 23. 초기 페이지 루프 기능을 키 업 기능과 결합하는 방법은 무엇입니까?
- 24. 생성자에서 매개 변수를로드하는 기능과 "이벤트 별"기능을 갖는 방법은 무엇입니까?
- 25. SQL "Select 42"의 기능과 Sybase에서이 기능을 끄는 방법은 무엇입니까?
- 26. jQuery는 각기 다른 기능을 제공합니다.
- 27. 홈페이지 전용 기능을 호출 한 다음 다른 페이지에서 기능을 중지 한 다음 다시 홈페이지로 호출하십시오.
- 28. 인터페이스에서 일부 기능을 상속하지 않는 방법은 무엇입니까?
- 29. 하나의 기능을 100ms 지연 (멀티 스레딩 - VB6 - Excel) 다른 기능을 수행 한 후 별도의 스레드에서 100ms의 지연 시간이있는 다른 기능을 수행 한 후에 하나의 기능을 실행할 수 있습니다.
- 30. 다른 기능을 파이썬의 다른 파일에서 가져 오시겠습니까?
당신은'ReadWriteLock'을 찾고 있습니다. –
@MarkoTopolnik 간단한 잠금 장치가 아닌 이유는 무엇입니까? – fge
@fge 간단한 잠금 장치로 어떻게 비대칭 성을 달성 할 수 있습니까? –