class Test {
public static void main(String[] args) {
System.out.println("1.. ");
synchronized (args) {
System.out.println("2..");
try {
Thread.currentThread().wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("3..");
}
}
}
이 코드에서는 IllegalMonitorStateException
모니터 예외가 발생합니다. 때문에 문자열 배열 객체입니다 args
주위 동기화 블록, 나의 이해에 따라, 현재의 thread가 락을 획득해야하며 대기 방법, 나는 잠금을 해제입니다.IllegalMonitorStateException in code
은 누군가가 나에게이 예외 뒤에 이유를 설명 할 수 있습니까?
음, 뭔가를 놓치지 않는 한 기본 스레드를 제외한 나머지 스레드는 여기에 생성되지 않습니다. 전체 스택 추적을 게시하십시오. – hexafraction
어떤 라인에서 예외가 발생합니까? – zch
args 객체에 대한 모니터를 들고 있지만 현재 스레드 객체에서'wait()'을 호출 중입니다. 모니터를 가지고있는 객체에서'wait()'를 호출해야합니다. 예 : 이 질문 : http://stackoverflow.com/questions/3773807/threads-synchronizing-in-java-illegalmonitorstateexception?rq=1 – confusopoly