나는 synchronize
메서드 앞에 키워드 해당 개체에 동기화가 발생한다는 있습니다. 즉, 개체의 동일한 인스턴스를 실행하는 2 개의 스레드가 동기화됩니다.
그러나 동기화가 개체 수준에 있기 때문에 개체의 다른 인스턴스를 실행하는 2 개의 스레드는 동기화되지 않습니다. 메서드에 의해 호출되는 Java 클래스에 정적 변수가있는 경우 클래스 인스턴스간에 동기화되기를 원합니다. 두 인스턴스는 두 개의 서로 다른 스레드에서 실행됩니다.
다음과 같은 방법으로 동기화 할 수 있습니까?
public class Test
{
private static int count = 0;
private static final Object lock= new Object();
public synchronized void foo()
{
synchronized(lock)
{
count++;
}
}
}
lock
정적 개체 를 정의하고 synchronized
해당 잠금에 키워드 를 사용하고 있으므로 정적 변수 count
가 이제 클래스의 인스턴스간에 동기화 된다는 것이 사실 Test
입니까?