2011-03-07 4 views
6

가능한 중복 :
How do synchronized static methods work in Java?정적 메서드에서 동기화되는 작업은 무엇입니까?

내가 정적 메서드에 사용 된 동기 경우 무슨 일이 일어날 지 궁금했다. 클래스가 해당 메소드에 잠금을 설정합니까? 비 정적 메소드에서 동기화와 다른 점은 무엇입니까?

감사

+0

동기화 된 정적 메서드는 개체와 반대로 클래스를 잠급니다. http://download.oracle.com/javase/tutorial/essential/concurrency/locksync.html – CMR

답변

-1

예, 클래스는 "얻는다"대신 인스턴스의 잠금 (브루노가 지적했듯이,이 용어는 부정확하다. 스레드가 클래스 객체 또는 잠금 객체로 인스턴스를 사용하여 잠금을 얻는다). 즉, 해당 메소드가 개별 인스턴스에서 동기화되는 경우 3 개의 동기화 된 메소드를 동시에 실행하는 3 개의 스레드를 가질 수 있습니다. 메서드가 클래스에서 동기화되면 하나의 스레드 만이를 실행할 수 있습니다.

+0

그러면 정적이 아닌 메소드를 동기화하는 요점은 무엇입니까? 죄송합니다. 바보 같은 질문 인 경우 S – blaa

+0

인스턴스 메서드를 동기화하면 _same_ 인스턴스에서 두 스레드가 작동하려고 할 때 보호됩니다. 스레드 1과 스레드 2는 모두 인스턴스 A에 대한 참조를 가지고 있습니다. –

+0

"클래스가 인스턴스 대신 잠금을 가져옵니다." 클래스는 잠금을 해제하지 않습니다. 이것은 잠금을 "가져 오는"스레드이며이 스레드는 개체와 연결되어 있습니다. –

4

This question은 위 질문에 대한 많은 고품질 답변을 제공합니다.

관련 문제