Daemon-Thread in Java

Mohammad Irfan 12 Oktober 2023
  1. Erstellen Sie einen Daemon-Thread mit der Methode setDaemon() in Java
  2. Erstellen Sie einen Daemon-Thread mit der Methode setDaemon() in Java
  3. Erstellen Sie einen Daemon-Thread mit der Methode setDaemon() in Java
Daemon-Thread in Java

In diesem Tutorial wird vorgestellt, was ein Daemon-Thread ist und wie ein Daemon-Thread in Java erstellt wird.

In Java ist ein Daemon-Thread ein spezieller Thread, der Hintergrundthread für andere Threads unterstützt. Java verwendet diese Threads, um speziellen Zwecken für Benutzer-Threads und Garbage Collection usw. zu dienen.

Um einen Daemon-Thread zu erstellen, stellt Java die Methode setDaemon() bereit, die ein boolesches Argument verwendet. Die Methode isDaemon() kann prüfen, ob der aktuell ausgeführte Thread ein Daemon-Thread ist oder nicht.

Erstellen Sie einen Daemon-Thread mit der Methode setDaemon() in Java

In diesem Beispiel verwenden wir die Methode setDaemon() der Klasse Thread, um einen Daemon-Thread zu erstellen. Wir erstellen drei Threads, von denen zwei als Daemon-Threads festgelegt sind. Wir verwenden die Methode isDaemon(), um zu überprüfen, ob der aktuell ausgeführte Thread ein Daemon-Thread ist oder nicht. Siehe das folgende Beispiel.

public class SimpleTesting extends Thread {
  public MainClass(String name) {
    super(name);
  }
  public void run() {
    boolean isDaemon = Thread.currentThread().isDaemon();
    System.out.println("Is this daemon thread: " + isDaemon);
  }
  public static void main(String[] args) {
    MainClass thread1 = new MainClass("Thread 1");
    MainClass thread2 = new MainClass("Thread 2");
    MainClass thread3 = new MainClass("Thread 3");
    thread1.setDaemon(true);
    thread1.start();
    thread2.start();
    thread3.setDaemon(true);
    thread3.start();
  }
}

Ausgabe:

Is this daemon thread: true
Is this daemon thread: false
Is this daemon thread: true

Erstellen Sie einen Daemon-Thread mit der Methode setDaemon() in Java

Der Daemon-Thread ist der Thread mit niedriger Priorität und wird immer hinter den Benutzer-Threads ausgeführt. Wir können die Priorität eines Threads mithilfe der Methode getPriority() erkennen, die einen ganzzahligen Wert zurückgibt. Wir verwenden die Methode getName(), um den Namen des aktuell laufenden Threads abzurufen. Siehe das folgende Beispiel.

public class SimpleTesting extends Thread {
  public MainClass(String name) {
    super(name);
  }
  public void run() {
    boolean isDaemon = Thread.currentThread().isDaemon();
    System.out.println("Is this daemon thread: " + isDaemon + ", "
        + Thread.currentThread().getName() + ", " + Thread.currentThread().getPriority());
  }
  public static void main(String[] args) {
    MainClass thread1 = new MainClass("Thread 1");
    MainClass thread2 = new MainClass("Thread 2");
    MainClass thread3 = new MainClass("Thread 3");
    thread1.setDaemon(true);
    thread1.start();
    thread2.start();
    thread3.setDaemon(true);
    thread3.start();
  }
}

Ausgabe:

Is this daemon thread: true, Thread 1, 5
Is this daemon thread: false, Thread 2, 5
Is this daemon thread: true, Thread 3, 5

Erstellen Sie einen Daemon-Thread mit der Methode setDaemon() in Java

Wir starten den Thread, nachdem wir beim Erstellen eines Daemon-Threads einen Wert für die Methode setDaemon() festgelegt haben. Dies ist wichtig, denn wenn wir einen bereits laufenden Thread als Daemon festlegen, wird eine Ausnahme ausgelöst. Wir rufen die Methode start() mit thread1 auf und rufen dann setDaemon() auf, was nicht erlaubt ist. Siehe das folgende Beispiel.

public class SimpleTesting extends Thread {
  public MainClass(String name) {
    super(name);
  }
  public void run() {
    boolean isDaemon = Thread.currentThread().isDaemon();
    System.out.println("Is this daemon thread: " + isDaemon + ", "
        + Thread.currentThread().getName() + ", " + Thread.currentThread().getPriority());
  }
  public static void main(String[] args) {
    MainClass thread1 = new MainClass("Thread 1");
    MainClass thread2 = new MainClass("Thread 2");
    MainClass thread3 = new MainClass("Thread 3");
    thread1.start();
    thread1.setDaemon(true);
    thread2.start();
    thread3.setDaemon(true);
    thread3.start();
  }
}

Ausgabe:

Is this daemon thread: false, Thread 1, 5
Exception in thread "main" java.lang.IllegalThreadStateException

Verwandter Artikel - Java Thread