getInstance를 실행하는 동안 OutOfmemory 오류가 발생합니다. 스레드 덤프를 확인하고 스레드가 BLOCKED (getInstance에서 모니터 잠금 대기 중)를 발견했습니다.OutOfMemory 오류 : 정적 메서드 내에서 동기화 된 블록
저는 멀티 스레딩에서 매우 초보자입니다. 아무도 아래의 구현이 정확하거나하지 않은 경우 설명해 주시겠습니까? 그렇지 않은 경우 어떻게 개선 할 수 있습니까?
class MyClass {
private static MyClass instance = new MyClass();
public static MyClass getInstance() throws Exception {
synchronized (instance) {...}
}
public static MyClass clearInstance() throws Exception {
synchronized (instance) {...}
}
}
정적 메서드 내부의 비 정적 필드를 어떻게 참조 할 수 있습니까? – shizhz
@shizhz .. 죄송합니다. 코드를 업데이트했습니다! –
만약 당신이'getInstance'와'clearInstance' 메소드의 구현을 게시한다면 더 좋을 것이라고 생각합니다. 그리고 문제를 재현하는 방법 :-) – shizhz