아래 예제와 같이 call
메서드의 객체에 잠금을 설정하면 synchronized
키워드를 추가로 가질 필요가 없습니다.여러 수준의 Java 동작에서의 동기화
public class Prac
{
public static void main(String[] args)
{
new Prac().call();
}
private synchronized void call()
{
further();
}
private synchronized void further()
{
oneMore();
}
private synchronized void oneMore()
{
// do something
}
}
하지만, 난 여전히 같은 만남에 무엇을 자바 further
및 onceMore
에 synchronized
키워드를 추가하면? Java가 잠금이 필요한지 여부를 확인합니까? 또는 메소드 호출이 같은 스택에 있기 때문에 잠금이 이미 필요한지 여부를 확인하지 않고 잠금이 이미 획득되었으므로 진행됩니다.
참고 : 의심의 여지가 이런 상황에서 자바가 어떻게 동작 할 것인지는 확실치 않지만, 바이어스 된 잠금과는 다릅니다.
잠금을 확인하면 성능 오버 헤드가 추가됩니까? – Batty