2013-09-21 11 views
5

Daemon-Threads bieten Dienste für Benutzer-Threads, außer gc Was ist ein anderes Beispiel (Fall), in dem ein Daemon-Thread verwendet werden kann? (Jede Aufgabe (Logik), die innerhalb der run() Methode einer daemonThread in der Praxis sein kann)Daemon-Thread- Anwendungsfall

+1

@ user976025 Ihr Post sollte als Community-Wiki markiert werden, da es zur Diskussion neigt, anstatt eine präzise und definitive Antwort zu erfordern. –

Antwort

4

Hier ist eine kurze Liste von, wenn Sie möchten, können einen Dämon-Thread verwenden:

  • Statistiken sammeln und die Statusüberwachungsaufgaben Durchführung - Senden und Netzwerk Herzschläge empfangen, um die Dienste zu Monitoring-Tools liefert, und so weiter.
  • Durchführen von asynchronen E/A-Aufgaben - Sie können eine Warteschlange mit E/A-Anforderungen erstellen und eine Gruppe von Daemon-Threads einrichten, die diese Anforderungen asynchron verarbeiten.
  • Zuhören für eingehende Verbindungen - Daemon-Threads sind sehr praktisch in Situationen wie diese, denn sie lassen Sie programmieren eine einfache „für immer“ Schleife, anstatt eine Einrichtung zu schaffen, die die Aufmerksamkeit auf Exit-Anforderungen vom Hauptthread zahlt.
+0

Ich denke über den Vorschlag des Sendens von Benutzerstatistiken (über die Leistung eines Werkzeugs oder Aktivitäten eines Benutzers auf diesem Tool) wie die von Eclipse oder einem anderen Tool, ich meine, diese Art von Berichten in einem Daemon-Thread generieren ist es nicht Recht? – LeandreM

+0

@ user976095 Absolut, diese Art von Netzwerk-I/O-Aufgaben sollten auf Daemon-Threads durchgeführt werden. Der allgemeine Daemon/Non-Daemon "cutoff" läuft für mich entlang der Zeile "für den Benutzer" vs. "für das Programm". Senden der Statistiken ist definitiv "für das Programm", nicht "für den Benutzer". Benutzer würden es nicht schätzen zu warten, dass Ihr Statistik-Thread beendet wird, wenn sie das Programm schließen, sodass der Thread im Daemon-Modus ausgeführt werden sollte. – dasblinkenlight

2

Klingt wie eine Aufgabe Frage ha ha.

Sie können sie auch für IO verwenden, weil IO-Block und seine beste, das in einem Worker-Thread zu tun.

Auch Netzwerkaktivität, wenn Sie darauf warten, Dinge zum Download usw. wie die Antwort auf eine Postanforderung.

1

Daemon Fäden werden in der Regel zur Durchführung Dienste für Ihre Anwendung/applet (wie beispielsweise das Laden des „fiddley bits“) verwendet. Der Hauptunterschied zwischen Benutzer-Threads und Daemon-Threads besteht darin, dass die JVM ein Programm nur beendet, wenn alle Benutzer-Threads beendet wurden. Daemon-Threads werden von der JVM beendet, wenn keine Benutzerthreads mehr ausgeführt werden, einschließlich des Hauptthreads der Ausführung.

Kurz gesagt: Daemon-Threads verhindern nicht, dass das Programm beendet wird; Benutzer-Threads verhindern, dass das Programm beendet wird.

Verwandte Themen