Heim  >  Artikel  >  Java  >  Daemon-Thread in Java

Daemon-Thread in Java

WBOY
WBOYOriginal
2024-08-30 16:03:14429Durchsuche

Daemon-Thread in Java ist ein Thread mit der niedrigsten Priorität und wird zur Bereitstellung von Diensten für den Thread verwendet, der außerdem zur Ausführung der Hintergrundaufgaben verwendet wird. Zu den Aufgaben im Hintergrund gehören die Garbage Collection und viele weitere Aufgaben, bei denen die JVM sich nach dem Beenden selbst zum Zeitpunkt der Ausführung gleichzeitig verhindert. Die virtuelle Java-Maschine beendet sich selbst, wenn sie andere Benutzer-Threads findet, die eigentlich keine Daemon-Threads sind. Falls die Java Virtual Machine einen Daemon-Thread findet, wird dieser Thread zuerst beendet und dann selbst heruntergefahren.

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Syntax

Es gibt keine spezifische Syntax für den Daemon-Thread, er kann jedoch von anderen Methoden als Teil des Daemon-Threads erstellt und aufgerufen werden, was wie folgt dargestellt wird:

public class DaemonThread extends Thread
  • öffentliche Klasse: Der Zugriffsmodifikator der Klasse ist öffentlich und
  • DaemonThread: Der Thread-Typ ist DaemonThread, daher wird er von der Thread-Klasse geerbt und erweitert.
  • Thread: Die Thread-Klasse wird verwendet, um die Eigenschaften der Thread-Klasse an den Daemon-Thread zu erben.

Darüber hinaus handelt es sich um verschiedene Methoden mit unterschiedlicher Syntax zum Aufrufen des Daemon-Threads.

public final void setDaemon(boolean on)

Diese Methodensyntax übergibt den Parameter als booleschen Wert, der verwendet wird, da der Thread ein Daemon-Thread ist, wenn der Daemon-Thread als boolescher Wert markiert ist, was „true“ bedeutet.

public final boolean isDaemon()

Diese Methode gibt den Wert „true“ zurück, wenn der gefundene Thread ein Daemon-Thread ist, und „false“, wenn der gefundene Thread „false“ ist.

Wie funktioniert Daemon Thread in Java?

Ein Daemon-Thread ist ein Thread, der zum Erstellen eines Threads verwendet wird und alle Eigenschaften von seinem übergeordneten Thread erbt. Daher werden alle Threads, die in der Hauptmethode vorhanden sind, als untergeordnete Methode bezeichnet, die die meisten Eigenschaften für die Ausführung und Ausführung beliebiger Aufgaben von der übergeordneten Klasse erbt. Sie werden auch als Nicht-Daemon-Thread bezeichnet.

Hier kommt das eigentliche Bild davon, wie man die Nicht-Daemon-Threads oder Benutzer-Threads zu Daemon-Threads macht, indem man alle Methoden zum Festlegen des Threads als Daemon-Threads aufruft. Es kann einfach als Daemon-Thread festgelegt werden, indem die Methode setDaemon() der Thread-Klasse verwendet wird, die die Klasse ist, von der auch die ausführbare Schnittstelle erweitert wird.

Ein sehr wichtiger Punkt, den Sie im Hinterkopf behalten sollten, ist, dass jedes Mal, wenn eine JVM gestartet wird, zu diesem Zeitpunkt ein Thread namens „main“ erstellt wird und jedes Programm an diesem Punkt ausgeführt oder gestartet wird, oder wir können sagen, dass dies der Fall ist Punkt, an dem der Ausführungsfluss beginnt. Standardmäßig werden alle Threads in diesem Hauptthread ausgeführt, bis ein neuer Thread initiiert wird. Falls ein neuer Thread initiiert wird, ist der untergeordnete Thread für die Erstellung aller neuen Methoden verantwortlich.

Dann kommen Methoden, die für die Erstellung und Bestimmung von Daemon-Threads verantwortlich sind. Dazu gehören Methoden wie die setDaemon-Methode, die anhand des Werts des an die Methode übergebenen Parameters bestimmt, ob es sich bei dem erstellten Thread um einen Daemon-Thread oder einen Nicht-Daemon-Thread handelt.

Der öffentliche boolesche Thread isDaemon() wird andererseits verwendet, um den Status des Threads basierend auf dem Rückgabetyp zu überprüfen; wenn „false“, dann ist der Thread kein Daemon; andernfalls handelt es sich um einen Daemon.

Methoden

Hier sind die unten aufgeführten Methoden

1. public void setDaemon(boolean status)

Diese Methode wird verwendet, um die aktuelle Thread-Ausführung basierend auf dem übergebenen Parameter in einen Daemon-Thread umzuwandeln. Wenn dieser boolesch ist, ist der Thread ein Daemon-Thread. Wenn der übergebene Parameter nicht boolesch ist, ist der Thread der Nicht-Daemon-Thread .

Es fängt auch Hold-Ausnahmen wie IllegalThreadStateException oder Security Exception ab. Wenn festgestellt wird, dass illegalThreadStateException abgefangen wird, ist es eine Voraussetzung, dass der Thread nur aktiv sein darf. Wenn der aktuelle Thread nicht geändert werden kann, wird eine Sicherheitsausnahme verwendet.

2. öffentlicher boolescher Wert isDaemon()

Diese Methode wird verwendet, um die aktuelle Situation zu überprüfen oder den aktuellen Status basierend auf dem Rückgabetyp anzugeben; Wenn der Rückgabetyp wahr ist, handelt es sich um einen Daemon-Thread. andernfalls handelt es sich um den Nicht-Daemon-Thread.

Beispiele für Daemon-Threads in Java

Hier sind die folgenden Beispiele:

Beispiel #1

Dieses Programm demonstriert die Methode zum Festlegen des Threads als Daemon-Thread zur weiteren Bearbeitung mithilfe der Methode void setDaemon(boolean status) und der Methode isDaemon() nach dem Identifizieren des Daemon-Threads, die angibt, ob es sich bei dem Thread-Set um einen Daemon-Thread oder handelt der Nicht-Daemon-Thread abhängig vom Parametersatz mit booleschem Wert für den Parameter.

Code:

public class Daemon_Thread_Demo_set extends Thread {
public Daemon_Thread_Demo_set(String nm){
super(nm);
}
public void run()
{
if(Thread.currentThread().isDaemon())
{
System.out.println("Current_Thread is a Daemon thread" + Thread.currentThread().getName());
}
else
{
System.out.println("Current thread is a non-daemon thread. "+ Thread.currentThread().getName());
}
}
public static void main(String[] args) {
Daemon_Thread_Demo_set nm1 = new Daemon_Thread_Demo_set("nm1");
Daemon_Thread_Demo_set nm2 = new Daemon_Thread_Demo_set("nm2");
Daemon_Thread_Demo_set nm3 = new Daemon_Thread_Demo_set("nm3");
nm1.setDaemon(true);
nm1.start();
nm2.start();
nm3.setDaemon(false);
nm3.start();
}
}

Ausgabe:

Daemon-Thread in Java

Example #2

This program demonstrates the illegal exceptions which are thrown once the current thread is identified as the Daemon thread but then the value when the set is not coming out to be set value matched with the thread it will be throwing the illegal exception as represented in the output.

Code:

public class Daemon_thrd_demo2 extends Thread {
public void run()
{
System.out.println("Current_thread_Name: "+Thread.currentThread().getName());
System.out.println("thread_as_Daemon"+Thread.currentThread().isDaemon());
}
public static void main(String[] args) {
Daemon_thrd_demo2 tst1 = new Daemon_thrd_demo2();
Daemon_thrd_demo2 tst2 = new Daemon_thrd_demo2();
tst1.start();
tst1.setDaemon(true);
tst2.start();
}
}

Output:

Daemon-Thread in Java

Note: The above program gives the Exception because the user thread should be set as a daemon thread only before calling the setDaemon() method. If it is not called in this way, then the thread after invocation will throw these exceptions while execution. Also, all non-daemon thread and daemon thread should be set up keeping in mind the place, i.e. before the child class or before the parent class.

Conclusion

Daemon thread and non-daemon thread have differences in them. It is very important to identify these differences as it can lead to conflicts and exception because daemon thread is a kind of thread that has the lowest priority compared to other threads while execution.

Das obige ist der detaillierte Inhalt vonDaemon-Thread in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Java-Thread-DumpNächster Artikel:Java-Thread-Dump