G
Gast
Gast
Hallo,
ich habe folgendes Problem: ich will einen Thread erzeugen, der eine gewisse Zeit lang seine Arbeit macht, dann
irgendwann mal unterbrochen wird und zu einem späteren Zeitpunkt seine Arbeit wieder aufnehmen soll.
Jetzt habe ich hier im Forum einen Ansatz gefunden, mit dem das ganze funktionieren sollte. Und zwar hat jemand geschrieben, man soll wait(); und eine boolean-Var. verwenden. Habe leider keine Idee, wie ich das umsetzte..
Vielen Dank für eure Hilfe!
Hier der grobe Aufbau wie ich es mir vorstelle:
ich habe folgendes Problem: ich will einen Thread erzeugen, der eine gewisse Zeit lang seine Arbeit macht, dann
irgendwann mal unterbrochen wird und zu einem späteren Zeitpunkt seine Arbeit wieder aufnehmen soll.
Jetzt habe ich hier im Forum einen Ansatz gefunden, mit dem das ganze funktionieren sollte. Und zwar hat jemand geschrieben, man soll wait(); und eine boolean-Var. verwenden. Habe leider keine Idee, wie ich das umsetzte..
Vielen Dank für eure Hilfe!
Hier der grobe Aufbau wie ich es mir vorstelle:
Code:
public class ThreadTest {
Thread myThread = new MyThread();
protected void startThread() {
/*if (myThread.getState() == Thread.State.WAITING) {
myThread.???; hier soll er aufgeweckt werden, aber mit welcher Methode?
} else myThread.start(); */
myThread.start(); // das kann ich lt. API ja nur einmal pro thread aufrufen
}
protected void stopThread() {
try {
myThread.wait(); // geht so noch nicht
} catch (InterruptedException e) {}
}
private class MyThread extends Thread {
public void run() {
while (true) {
if (isInterrupted()) {
break;
}
this.tuWas();
}
}
private void tuWas() {
System.out.println(" arbeite..");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
interrupt();
}
}
}
public static void main(String args[]) {
ThreadTest tt = new ThreadTest();
System.out.println("erster Durchgang..");
try {
tt.startThread();
Thread.sleep(2000); // thread wird irgendwann unterbrochen
// hier testweise nach 2 sek.
} catch (InterruptedException e) { /* nix */ }
tt.stopThread();
// hier wird irgendwas anderes gemacht..
// zeit vergeht...
// jetzt soll der 'alte' thread wieder aufgeweckt werden
System.out.println("nächster Durchgang");
// aber wie ???
}
}