2011-03-06 4 views

답변

3

독자는 독자가 읽는 동안 작성자가 쓰기를 원하지 않습니다. 그렇지 않으면 손상된 (예 : 반 기입 된) 값으로 읽을 수 있기 때문입니다. (다른 사람에 의해 이전에 다른 사람에 의해 언급되었습니다)

동시 프로그래밍의 다른 중요한 점은 가시성입니다. 읽기 잠금을 사용하지 않으면 VM이 이전 값을 캐시 할 수 있으며 새 값은 표시되지 않습니다. 때로는 재정렬 (reordering)조차도 문제가 될 수 있습니다.

이 주제 (및 기타 여러 주제)에 대한 정말 좋은 책은 Java Concurrency in Practice입니다. Doug Lea에 의해 Synchronization and the Java Memory Model 무료 온라인 기사도 그것을 커버하고 좋은 시작이 될 수 있습니다.

3

표준 Java SE 클래스 라이브러리에는 ReaderLock과 같은 클래스가 없습니다.

일반적으로 "읽기 잠금"에 대해 질문하는 경우 아이디어는 쓰기 잠금을 획득하고 파일을 읽는 동안 파일에 쓰는 것을 중지하는 것입니다.

1

나는 당신이 동기화에 대해 물어 보는 것 같아. 그렇다면 독자가 공유 버퍼를 사용하기 전에 잠글 필요가 있습니다. 읽기 작업을하지 않는 경우 writer 스레드가 공유 버퍼를 쓸 수 있으며 잘못된 데이터를 읽을 수 있습니다. 나는 당신의 질문이 명확하지 않기 때문에 당신이 이것을 요구하고 있는지 확실하지 않습니다.