Hallo,
ich hab ein Problem mit Threads.
Ich möchte mein Programm unter bestimmten Bedingungen (wenn z.B. das Programm eine bestimmte Zeit läuft) selbst neu aufrufen.
Dazu habe ich am Ende meiner main Methode einen kleinen inline-Thread stehen, der die Methode selbst nochmals aufruft. Anfangs hatte ich in der letzten Zeile der main-Methode nur
stehen, dachte mir allerdings, dass dadurch die Funktion nie zu Ende gehen würde, weil sie die Methode wieder von vorne abarbeitet usw. (rekursiv eben). Deswegen der inline-Thread.
Nunja, wie ich es nun beobachten konnte wird bei mir nach jedem neuen Selbstaufruf ein neuer Thread gestartet, wobei der vorherige nicht endet. Aber warum? Ich verstehe es nicht, normal müsste er doch terminieren, oder?
Als ich mir die Sache etwas genauer in einem Profiler (den von Netbeans) anschaute, musste ich feststellen, dass die "Vater"-Threads schlafen. Woran kann das liegen, bzw ist das normal?
"grober Code":
Hoffe ich habe mein Problem verständlich ausgedrückt.
Würde mich über Hilfe sehr freuen.
ich hab ein Problem mit Threads.
Ich möchte mein Programm unter bestimmten Bedingungen (wenn z.B. das Programm eine bestimmte Zeit läuft) selbst neu aufrufen.
Dazu habe ich am Ende meiner main Methode einen kleinen inline-Thread stehen, der die Methode selbst nochmals aufruft. Anfangs hatte ich in der letzten Zeile der main-Methode nur
Java:
main(arguments);
stehen, dachte mir allerdings, dass dadurch die Funktion nie zu Ende gehen würde, weil sie die Methode wieder von vorne abarbeitet usw. (rekursiv eben). Deswegen der inline-Thread.
Nunja, wie ich es nun beobachten konnte wird bei mir nach jedem neuen Selbstaufruf ein neuer Thread gestartet, wobei der vorherige nicht endet. Aber warum? Ich verstehe es nicht, normal müsste er doch terminieren, oder?
Als ich mir die Sache etwas genauer in einem Profiler (den von Netbeans) anschaute, musste ich feststellen, dass die "Vater"-Threads schlafen. Woran kann das liegen, bzw ist das normal?
"grober Code":
Java:
public void Klasse{
public static void main(String args[]){
/* normaler code bis zum Ende der Methode.. */
new Thread(
new Runnable() {
public void run() {
try {
Klasse.main(arguments);
} catch (Exception ex) {
Logger.getLogger(TCPServer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}).start();
}
}
Hoffe ich habe mein Problem verständlich ausgedrückt.
Würde mich über Hilfe sehr freuen.