인프런 커뮤니티 질문&답변

원종민님의 프로필 이미지
원종민

작성한 질문수

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

synchronized 메서드

synchronized가 붙은 메소드를 정말 동시에 접근하는 경우

작성

·

194

4

[질문 내용]
안녕하세요. 항상 좋은 강의 감사드리며 질문이 하나 있습니다. 멀티 코어라는 가정하에, synchronized가 붙은 메소드를 정말 동시에 호출하는 경우에는 어떤 스레드가 Lock을 가져가는지 궁금합니다. 정말 동시에 호출되면 두 스레드 모두 Lock을 획득할 수 있는지 조회할 때 획득할 수 있다고 조회가 될 것 같아서요.

답변 1

5

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 원종민님

Java의 synchronized 메커니즘은 원자적인 lock 획득을 보장합니다. 즉, 두 스레드가 완전히 동시에 synchronized 메소드를 호출하더라도, JVM은 이 호출들을 순차적으로 처리하여 하나의 스레드만 Lock을 획득할 수 있도록 합니다.

따라서 synchronized 메소드를 여러 스레드가 동시에 호출할 경우, 두 스레드가 동시에 Lock을 획득하는 일은 발생하지 않으며, 한 번에 하나의 스레드만 Lock을 획득하게 됩니다. Lock을 획득하지 못한 다른 스레드는 Lock이 해제될 때까지 대기합니다.

감사합니다.

원종민님의 프로필 이미지
원종민

작성한 질문수

질문하기