작성
·
194
4
[질문 내용]
안녕하세요. 항상 좋은 강의 감사드리며 질문이 하나 있습니다. 멀티 코어라는 가정하에, synchronized가 붙은 메소드를 정말 동시에 호출하는 경우에는 어떤 스레드가 Lock을 가져가는지 궁금합니다. 정말 동시에 호출되면 두 스레드 모두 Lock을 획득할 수 있는지 조회할 때 획득할 수 있다고 조회가 될 것 같아서요.
답변 1
5
안녕하세요. 원종민님
Java의 synchronized 메커니즘은 원자적인 lock 획득을 보장합니다. 즉, 두 스레드가 완전히 동시에 synchronized 메소드를 호출하더라도, JVM은 이 호출들을 순차적으로 처리하여 하나의 스레드만 Lock을 획득할 수 있도록 합니다.
따라서 synchronized 메소드를 여러 스레드가 동시에 호출할 경우, 두 스레드가 동시에 Lock을 획득하는 일은 발생하지 않으며, 한 번에 하나의 스레드만 Lock을 획득하게 됩니다. Lock을 획득하지 못한 다른 스레드는 Lock이 해제될 때까지 대기합니다.
감사합니다.