해결된 질문
작성
·
96
·
수정됨
1
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
프로세스 A가 synchronized 키워드가 붙은 increase를 호출하여 실행 중일 때 프로세스 B가 synchronized 키워드가 붙은 decrease도 실행하지 못한다고 설명해주셨는데요.
그 이유가 increase함수에 synchronized 키워드가 붙어있어 상호배제 매커니즘이 동작하는데, decrease 함수에서 접근하는 변수 중 increase에서 사용하는 health가 있기 때문에, 공유자원에 동시에 접근하는 것을 막기 위한 메커니즘일까요?
아니면, 프로세스 A가 synchronized 키워드가 붙은 increase가 실행되고 있다면 다른 synchronized 키워드가 붙은 함수는 decrease 혹은 다른 클래스의 synchronized 함수 등 어떤 것도 실행하지 못한다는 의미일까요?
답변 1
1
안녕하세요 박호정님!
모니터에 대해 궁금하신 점이 있으시군요.
synchronized 키워드는 해당 객체에 여러 스레드가 동시에 접근하는 걸 방지해줍니다.
synchronized가 붙은 함수를 실행하면(ex: increase) 해당 객체의 synchronized가 붙은 다른 함수(ex: decrease)는 동시에 객체에 접근하지 못합니다.
예제에선 공유자원인 health에 동시에 접근하지 못하도록 해당 변수를 사용하는 두 개의 함수에 synchronized 키워드를 달아줬습니다.
궁금증이 해결되셨나요?😀
여러 쓰레드가 동일한 객체에 접근할 경우이군요! 이해되었습니다~ 감사합니다!