가능한 중복 :
How do synchronized static methods work in Java?정적 메서드에서 동기화되는 작업은 무엇입니까?
내가 정적 메서드에 사용 된 동기 경우 무슨 일이 일어날 지 궁금했다. 클래스가 해당 메소드에 잠금을 설정합니까? 비 정적 메소드에서 동기화와 다른 점은 무엇입니까?
감사
가능한 중복 :
How do synchronized static methods work in Java?정적 메서드에서 동기화되는 작업은 무엇입니까?
내가 정적 메서드에 사용 된 동기 경우 무슨 일이 일어날 지 궁금했다. 클래스가 해당 메소드에 잠금을 설정합니까? 비 정적 메소드에서 동기화와 다른 점은 무엇입니까?
감사
예, 클래스는 "얻는다"대신 인스턴스의 잠금 (브루노가 지적했듯이,이 용어는 부정확하다. 스레드가 클래스 객체 또는 잠금 객체로 인스턴스를 사용하여 잠금을 얻는다). 즉, 해당 메소드가 개별 인스턴스에서 동기화되는 경우 3 개의 동기화 된 메소드를 동시에 실행하는 3 개의 스레드를 가질 수 있습니다. 메서드가 클래스에서 동기화되면 하나의 스레드 만이를 실행할 수 있습니다.
그러면 정적이 아닌 메소드를 동기화하는 요점은 무엇입니까? 죄송합니다. 바보 같은 질문 인 경우 S – blaa
인스턴스 메서드를 동기화하면 _same_ 인스턴스에서 두 스레드가 작동하려고 할 때 보호됩니다. 스레드 1과 스레드 2는 모두 인스턴스 A에 대한 참조를 가지고 있습니다. –
"클래스가 인스턴스 대신 잠금을 가져옵니다." 클래스는 잠금을 해제하지 않습니다. 이것은 잠금을 "가져 오는"스레드이며이 스레드는 개체와 연결되어 있습니다. –
This question은 위 질문에 대한 많은 고품질 답변을 제공합니다.
동기화 된 정적 메서드는 개체와 반대로 클래스를 잠급니다. http://download.oracle.com/javase/tutorial/essential/concurrency/locksync.html – CMR