„Hier ist ein neues und interessantes Thema.“

„Es stellt sich heraus, dass man Threads in verschiedenen Modi starten kann.“

„Ein Standardprogramm (mit nur einem Thread) stoppt die Ausführung, wenn der Hauptthread seine Arbeit beendet. Der Hauptthread beendet die Ausführung, das Programm wird beendet und die JVM gibt ihren Speicher frei.“

„Wenn wir einen untergeordneten Thread starten, läuft das Programm weiter, auch wenn der Hauptthread beendet ist. Die JVM wird nicht beendet, solange mindestens ein laufender Thread vorhanden ist. Sobald alle laufenden Threads beendet sind, wird das Programm geschlossen.“

„Nun, große Programme haben oft sogenannte ‚Service-Threads‘, deren Aufgabe es ist, andere Teile des Programms zu warten. Sie sind für sich genommen nicht notwendig. Zum Beispiel: Entfernen nicht verwendeter Objekte (Garbage Collection), Speicherauszüge und Fehler Protokollierung, diverse Berichte zum aktuellen Programmstatus usw.

„Diese Service-Threads werden benötigt, wenn das Programm läuft, aber sie werden nicht alleine benötigt.“

"Ja ich verstehe das."

„Mit Java können Sie einen Thread als Daemon ausführen. Solche Threads funktionieren genauso wie andere, aber wenn alle Nicht-Daemon-Threads in einem Programm beendet wurden und nur noch Daemon-Threads übrig sind, schließt die JVM das Programm.“

„Die Deklaration eines ‚Service‘-Threads bedeutet also nur, dass er beim Beenden des Programms nicht berücksichtigt wird. Ist das alles?“

„Uhhhh... Na ja, das hast du sicher kurz und bündig gesagt. Im Grunde ist es das, was ich dir sagen wollte.“

„Kürze ist ein Talent. Und talentierte Roboter sind in allem talentiert.“

"Irgendwelche Fragen?"

„Wie startet man einen Thread als Daemon? Von einer DaemonThread-Klasse erben?“

„Nein, es ist viel einfacher. Die Thread-Klasse hat eine setDaemon(boolean)-Methode. Sie müssen nur true übergeben und das war's. Sie müssen sie nur aufrufen, bevor Sie die start()-Methode aufrufen, bevor der eigentliche Thread aufgerufen wird erstellt. Sie können den Typ eines Threads nicht mehr ändern, nachdem er mit der Ausführung begonnen hat.

Beispiel:
Thread thread = new LoggerThread();
thread.setDaemon(true);
thread.start();

"Und das ist es?"

"Ja."

„Ich möchte Ihre Aufmerksamkeit noch einmal auf den Prozess des Erstellens und Startens eines Threads lenken.“

„Durch das Erstellen eines Thread-Objekts wird kein Thread erstellt. Ein Thread-Objekt ist kein Thread. Die JVM erstellt einen Thread, wenn die start()-Methode aufgerufen wird. Ein Thread ist ein spezielles JVM-Objekt, mit dem Sie auf Informationen über einen Thread zugreifen können und Folgendes bereitstellen Du hast ein wenig Kontrolle darüber.

„Ich verstehe. Danke, Ellie.“