Ich wollte einen Thread programmieren der von einem anderen Thread aus jederzeit pausiert, wieder aufgeweckt und beendet werden kann. Unten ist das bescheidene Ergebnis zu sehen. Nun zur Frage ob der Code für die beschriebene Aufgabe geeignet ist. Also gibt es problematische Stellen wegen Threadsicherheit oä., kann man das ganze evtl. besser machen?
Java:
public class MyThread extends Thread {
private boolean stopRequested;
private boolean suspendRequested;
public MyThread() {
stopRequested = false;
suspendRequested = false;
start();
}
public synchronized void requestStop() {
stopRequested = true;
notify();
}
public synchronized void requestSuspend() {
suspendRequested = true;
}
public synchronized void requestWake() {
suspendRequested = false;
notify();
}
private synchronized boolean continueThread() {
while(!stopRequested && suspendRequested) {
try {
wait();
}
catch(InterruptedException e) {
// check flags again
}
}
return !stopRequested;
}
@Override
public void run() {
while(continueThread()) {
// do stuff
}
}
}