Hallo,
ich habe zwei Objekte, wovon eines von Thread ableitet welches ich im folgenden ThreadObject nenne. Threadobject hat neben der Methode run() auch noch eine Methode isDone() die mir ein Boolean zurückgibt, ob die run-Methode fertig ist. Dafür setzt die run Methode am Ende eine Booleanvariable auf true.
Das erste Objekt initialisiert das ThreadObject und startet die run-Methode mit start(). Alle paar Sekunden fragt es nun die isDone()-Methode ab, um zu erfahren, ob ThreadObject fertig ist.
Allerdings blockiert die isDone()-Methode, solange bis ThreadObject mit run() fertig ist. Nun frage ich mich, ob es eine Möglichkeit gibt, isDone() kontinuierlich abzufragen...
Eine weitere Frage noch: Wenn ThreadObject mit run() fertig ist, kann ich dann erneut mit start() die run()-Methode starten?
Falls euch die Vorstellung der Problemstellung nicht so leicht fällt (ist ja nur Text), könnt ihr hier nochmal kurz auf den Quelltext schauen:
ich habe zwei Objekte, wovon eines von Thread ableitet welches ich im folgenden ThreadObject nenne. Threadobject hat neben der Methode run() auch noch eine Methode isDone() die mir ein Boolean zurückgibt, ob die run-Methode fertig ist. Dafür setzt die run Methode am Ende eine Booleanvariable auf true.
Das erste Objekt initialisiert das ThreadObject und startet die run-Methode mit start(). Alle paar Sekunden fragt es nun die isDone()-Methode ab, um zu erfahren, ob ThreadObject fertig ist.
Allerdings blockiert die isDone()-Methode, solange bis ThreadObject mit run() fertig ist. Nun frage ich mich, ob es eine Möglichkeit gibt, isDone() kontinuierlich abzufragen...
Eine weitere Frage noch: Wenn ThreadObject mit run() fertig ist, kann ich dann erneut mit start() die run()-Methode starten?
Falls euch die Vorstellung der Problemstellung nicht so leicht fällt (ist ja nur Text), könnt ihr hier nochmal kurz auf den Quelltext schauen:
Java:
public class ThreadObject extends Thread{
private boolean done = true;
public boolean isDone(){ return done;}
public void run(){
done = false;
//Do things
done = true;
}
}
public class FirstObject{
public void anyMethod(){
ThreadObject to = new ThreadObject();
to.start();
while(!to.isDone()){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
to.start(); //<-- ist das hier möglich?
}
}