Hallo,
mein Programm besitzt 3 Threads.
Einer dieser Threads dient zur Überwachung und Steuerung der anderen beiden.
Die run der untergeordneten Threads hat folgende Form:
Das ganze funktioniert auch eigentlich. Nach dem Eintreffen der Bedingung wird interrupt aufgerufen die run methode bricht aus der while Schleife aus, und direkt danach liefert t1.isInterrupted true zurück. Dies tut isInterrupted allerdings nur im selben Schleichendurchlauf nach dem Aufruf von interrupt. Danach liefert isInterrupted wieder false, obwohl der Thread nichtsmehr tut.
Viele Grüße,
mcemsi
mein Programm besitzt 3 Threads.
Einer dieser Threads dient zur Überwachung und Steuerung der anderen beiden.
Code:
public ThreadController()
{
....
t1 = new Thread(this.fill);
t2 = new Thread(this.pop);
t1.start();
t2.start();
.....
}
public void run() {
while(true)
{
if (Bedingung && !t1.isInterrupted())
{
t1.interrupt();
}
}
}
Die run der untergeordneten Threads hat folgende Form:
Code:
public void run() {
while (!Thread.currentThread().isInterrupted()) {
....
}
System.out.println("ende t1");
}
Das ganze funktioniert auch eigentlich. Nach dem Eintreffen der Bedingung wird interrupt aufgerufen die run methode bricht aus der while Schleife aus, und direkt danach liefert t1.isInterrupted true zurück. Dies tut isInterrupted allerdings nur im selben Schleichendurchlauf nach dem Aufruf von interrupt. Danach liefert isInterrupted wieder false, obwohl der Thread nichtsmehr tut.
Viele Grüße,
mcemsi