독자가 아무 것도 바꾸지 않으므로 왜 ReaderLock이 필요합니까?왜 ReaderLock이 필요합니까?
2
A
답변
3
독자는 독자가 읽는 동안 작성자가 쓰기를 원하지 않습니다. 그렇지 않으면 손상된 (예 : 반 기입 된) 값으로 읽을 수 있기 때문입니다. (다른 사람에 의해 이전에 다른 사람에 의해 언급되었습니다)
동시 프로그래밍의 다른 중요한 점은 가시성입니다. 읽기 잠금을 사용하지 않으면 VM이 이전 값을 캐시 할 수 있으며 새 값은 표시되지 않습니다. 때로는 재정렬 (reordering)조차도 문제가 될 수 있습니다.
이 주제 (및 기타 여러 주제)에 대한 정말 좋은 책은 Java Concurrency in Practice입니다. Doug Lea에 의해 Synchronization and the Java Memory Model 무료 온라인 기사도 그것을 커버하고 좋은 시작이 될 수 있습니다.
3
표준 Java SE 클래스 라이브러리에는 ReaderLock
과 같은 클래스가 없습니다.
일반적으로 "읽기 잠금"에 대해 질문하는 경우 아이디어는 쓰기 잠금을 획득하고 파일을 읽는 동안 파일에 쓰는 것을 중지하는 것입니다.
1
나는 당신이 동기화에 대해 물어 보는 것 같아. 그렇다면 독자가 공유 버퍼를 사용하기 전에 잠글 필요가 있습니다. 읽기 작업을하지 않는 경우 writer 스레드가 공유 버퍼를 쓸 수 있으며 잘못된 데이터를 읽을 수 있습니다. 나는 당신의 질문이 명확하지 않기 때문에 당신이 이것을 요구하고 있는지 확실하지 않습니다.
관련 문제
- 1. 왜 저장 버튼이 필요합니까?
- 2. 왜 주조 기능이 필요합니까?
- 3. 왜 "delete []"연산자가 필요합니까?
- 4. 왜 typeof가 필요합니까?
- 5. 왜 깊이 버퍼가 필요합니까?
- 6. 프리즘 모듈 - 왜 필요합니까?
- 7. 왜 2NF가 필요합니까?
- 8. 왜 RTTI가 필요합니까?
- 9. 왜 여기에 세미콜론이 필요합니까?
- 10. 왜 Control.Invoke가 필요합니까?
- 11. 왜 세션 빈이 필요합니까?
- 12. 왜 DJANGO_SETTINGS_MODULE 세트가 필요합니까?
- 13. 왜 Server.HtmlEncode가 필요합니까?
- 14. 왜 DataBind() 메서드가 필요합니까?
- 15. 왜 여기에 typename이 필요합니까?
- 16. 왜 lex에서 규칙이 필요합니까?
- 17. 왜 스크립트 로더가 필요합니까?
- 18. 왜 libprofiler.so.0이 필요합니까?
- 19. 마샬링 - 왜 그게 무엇이며 왜 필요합니까?
- 20. 왜 MySQL 데이터베이스 스키마가 필요합니까?
- 21. 왜 피커에 데이터 소스가 필요합니까?
- 22. 자바 동기화는 언제, 왜 필요합니까?
- 23. 왜 --new-branch 플래그가 필요합니까?
- 24. 왜 포트란 POINTER에 TARGET이 필요합니까?
- 25. 왜 generics에서 "? extends"가 필요합니까?
- 26. 왜 GLfloat에 전역 범위가 필요합니까?
- 27. 왜 프로토 타입 테스트가 필요합니까?
- 28. 왜 라벨 의도 필터가 필요합니까?
- 29. 왜 배열 앞에 별표가 필요합니까?
- 30. 왜 자식 대신 darcs가 필요합니까?
'ReentrantReadWriteLock'에서와 같은 ReaderLock? –