# Java Daemon Threads



## d3f3nd3r (1. Jun 2009)

Hallo,

Ich brauche eine kleine Verständnishilfe zum Thema Daemon Threads in Java.
Der einzige Unterschied zwischen Daemon und normalen Threads in Java ist ja, dass Daemon Threads nur so lange laufen, solange noch andere !DaemonThreads laufen.

Warum/Wozu also Daemon Threads benutzen?
Hat jemand ein Beispiel für mich?

mfg


----------



## maki (1. Jun 2009)

Wenn du zB. einen Thread in einer WebApp startest der immer im Hintergrund läuft, sollte dieser als Dämon gestartet werden, so weiss die VM dass dieser Thread gewaltsam beendet werden darf, sonst versucht die VM auf das "normale" Ableben des Threads zu warten.


----------



## d3f3nd3r (2. Jun 2009)

ja, aber für welche Aufgaben setzt man sie ein?

Sind sie eher für system code gedacht (z.b garbage collection)?


----------



## maki (2. Jun 2009)

Du kannst dir jederzeit selber einen schreiben, der zB. eine Queue abarbeitet.


----------



## d3f3nd3r (2. Jun 2009)

Ich suche aber nach Argumenten, warum ich die Queue in einem Daemon Thread anstatt in einem User Thread abarbeiten soll.


----------



## maki (2. Jun 2009)

Das steht in meiner ersten Antwort.


----------



## d3f3nd3r (3. Jun 2009)

Danke für die Hilfe!

Zwei Fragen hätte ich noch, folgendes Beispiel würd sich für einen Daemon Thread eignen:
ich will bei meinem Programm die aktuelle Zeit regelmäßig ausgeben, dazu mach ich einen Daemon Thread mit einer Endlosschleife in dem ich zb alle 50ms die Zeit ausgebe, wird das Programm beendet (oder genauer gesagt alle User Threads) wird mein Daemon Thread automatische beendet, dh ich brauch mich um das nicht kümmern.

Hab ich das so richtig verstanden?

Ich hab gelesen, dass die Garbage Collection im Java auch als Daemon Thread implementiert ist, kann das sein?

danke


----------



## maki (3. Jun 2009)

Dein Beispiel wäre imho richtig, ob der GC als Deamon implementiert ist weiss ich nicht, würde mich aber nicht überraschen weil es Sinn ergibt.


----------

