wait 및 notify를 사용하여 특정 메서드가 호출 될 때까지 스레드를 중지하려고합니다. 스레드에java.lang.IllegalMonitorStateException wait 및 notify
가있는 방법이 있습니다 : 나는 현재 그것을 다음과 같이 설정을 가지고
public void toggleTurnOver(){
if(turnOver == false){
turnOver = true;
synchronized(this){
for(Player p: playerList){
p.notify();
}
}
}else{
turnOver = false;
}
}
이 방법이 스레드에있는 다른 대기 깨어 난 무엇 될 것입니다 :
synchronized(myGame){
if(!myGame.getTurnOver()){
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pr.println(myGame.getTurnOver());
pr.flush();
}
}
을
동일한 객체에서 동기화되므로 예외를 던지게 될 요소가 무엇인지 확실하지 않습니다. 어떤 아이디어?
가 발생정확한 오류가 입니다 다음 documentation에
Exception in thread "Thread-3" Exception in thread "Thread-2" java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:503)
at Player.run(Player.java:112)
java.lang.IllegalMonitorStateException
at java.lang.Object.notify(Native Method)
at Game.toggleTurnOver(Game.java:764)
at Game.run(Game.java:386)
문서의 첫 번째 문장 일뿐만 아니라 상속 된 생성자를 제외한 유일한 문장이기도합니다. – Ordous