Java는 오브젝트 레벨 모니터를 지원합니다. 그래서 클래스의 인스턴스를 만들 때 기본적으로 다른 객체를 만듭니다. 이제 개체의 메서드를 통해 개체의 모든 인스턴스가 액세스하는 공유 데이터가있는 시나리오를 생각해보십시오.Java에서 모니터를 사용하여 제외를 수행하는 방법
동기화 된 키워드를 사용하면 같은 클래스의 다른 인스턴스 (개체)가 있기 때문에 스레드 안전성을 얻을 수있는 방법을 알려주세요.
Java는 오브젝트 레벨 모니터를 지원합니다. 그래서 클래스의 인스턴스를 만들 때 기본적으로 다른 객체를 만듭니다. 이제 개체의 메서드를 통해 개체의 모든 인스턴스가 액세스하는 공유 데이터가있는 시나리오를 생각해보십시오.Java에서 모니터를 사용하여 제외를 수행하는 방법
동기화 된 키워드를 사용하면 같은 클래스의 다른 인스턴스 (개체)가 있기 때문에 스레드 안전성을 얻을 수있는 방법을 알려주세요.
이 경우 이 인 개체를 동기화 할 수 있습니다.
데이터 조각에 액세스하는 100 개의 Foo 인스턴스가있는 경우 해당 데이터에는 단일 참조가 있습니다. 참조 바를 호출 할 수 있습니다. 그런 다음 모든 Foos는 동기화하면서 Bar에 액세스합니다. 클래스의 모든 인스턴스 데이터의 조각을 액세스하는 경우
void changeBar(){
synchronized(bar){
//insert logic here
}
}
, 당신이 static
회원 이용 될 수 있습니다
public class Foo {
private static Object shared;
public static void accessShared() { /* code */ }
}
을, 당신은 static
방법 synchronized
을 만들 수 있습니다
public class Foo {
private static Object shared;
public static synchronized void accessShared() { /* code */ }
}
이것은 코드와 동일합니다.
public class Foo {
private static Object shared;
public static void accessShared() {
synchronized (Foo.class) { /* code */ }
}
}
기억하십시오. Foo.class
은 그 자체로 하나의 객체이며 따라서 그에 연결된 모니터가 있습니다.