IllegalMonitorStateException

Status
Nicht offen für weitere Antworten.

virtualAudio

Aktives Mitglied
Interessanterweise kam laut Suche das Wort IllegalMonitorStateException noch nicht in diesem Forum vor.

mein Fehler muss also so unglaublich ungewöhnlich, weil einfach zu vermeiden, sein, dass ich anscheinend ziemlich auf der leitung stehe. hab auch nicht mit meinem ersten Thread zu tun...aber irgendwas mach ich grad anders.
Hab hier ein kleines Proggi, das den Fehler demonstriert.

Main-Klasse
Code:
public class Main{
	public static void main(String[] args){
		new ThreadDings(1000);
	}
}

Thread-Klasse mit dem Fehler
Code:
public class ThreadDings extends Thread{

	private int ms = -1;
	
	public ThreadDings(int ms){
		this.ms = ms;
		start();
	}
	
	public void run(){
		while(true){
			if(ms==-1){
				break;
			}
			try {
				wait(ms);     // hier passiert die IllegalMonitorStateException
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("x");
		}
	}
	
	public void aus(){
		ms = -1;
	}
}


Was mach ich denn da falsch?
Vielleicht kann mir ja wer helfen...
Danke für eure Anteilnahme! :)

lg Andi
 

Pappenheimer++

Bekanntes Mitglied
Hy, die Exception kommt, weil dir der Lock fehlt (Falls es das für native Datentypen überhaupt gibt. Ich denke nicht, aber ich will mich da aus guten Gründen jetzt nicht zu weit aus dem Fenster lehnen :D ). Die Geschichte mit wait und notify ist etwas komplizierter, aber ich denke, dass du vllt eher Thread.sleep(int ms) gesucht hast und aus Versehen zur falschen Methode gegriffen hast, oder?
 

virtualAudio

Aktives Mitglied
jaaaaaaaaa, daaanke...das wirds wohl sein!
Ich wusste das der Fehler in dieser Dimension sein muss :)

Super, ich hoffe die Leitung hat keinen Knick davongetragen :D

Special Thanx und lg Andi
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben