• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

자바 Bounded-Buffer 코드 질문 있습니다.

24.01.10 17:31 작성 24.01.10 17:43 수정 조회수 120

0

안녕하세요. 좋은 강의 잘 듣고 있습니다.

 

다름이 아니라 해당 부분 자바 코드에서 의문점이 있어 질문 드려봅니다.

 

synchronized 식별자를 붙인 메서드가 여러 개 있을 때 모니터 락이 각 메서드별로 생기는지 혹은 전체를 관리하는 하나의 모니터 락만 생기는지가 전 강의에서 언급이 되었는지 모르겠지만, 잘 기억이 안나서,, 두 케이스 모두 질문이 드립니다.

 

  1. 모니터 락이 각 메서드별로 생기는 경우

take와 give는 count라는 공유 변수에 접근하고 있다고 생각됩니다. synchronized를 통해 각 메서드별로 mutual exclusive가 지켜지지만, take와 give 사이에서는 race condition 문제가 발생하지는 않나요 ?? 예를 들어 buffer size = 3, count = 1인 경우 give와 take가 동시에 실행될 수 있고, count++과 count--에서 race condition 문제가 발생할 수 있다고 생각했습니다. 직접 테스트 해 본 결과 해당 문제는 발생하지 않았는데, 왜 그런지가 궁금합니다.

 

  1. 모니터 락이 전체를 관리하는 하나만 생기는 경우

하나의 메서드에서 무한정 대기하는 경우가 생길 것 같습니다. 아마 첫 번째 케이스가 맞다고 생각하지만 혹시라도 두 번째 케이스라면, take에서 count=0일 때 while문 안에서 wait()을 하는데, give 메서드가 실행이 되지 않으니 무한정 대기할 것이라고 생각됩니다.

 

쓰다보니 굉장히 길어졌습니다 ㅜㅜ.. 읽어주셔서 감사합니다.

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!