Thread daemon in Java
-
Crea thread daemon utilizzando il metodo
setDaemon()
in Java -
Crea thread daemon usando il metodo
setDaemon()
in Java -
Crea thread daemon usando il metodo
setDaemon()
in Java
Questo tutorial introdurrà cos’è il thread daemon e come creare un thread daemon in Java.
In Java, un thread daemon è un thread speciale che supporta thread in background per altri thread. Java utilizza questi thread per scopi speciali per i thread utente e la garbage collection, ecc.
Per creare un thread daemon, Java fornisce il metodo setDaemon()
che accetta un argomento booleano. Il metodo isDaemon()
può controllare se il thread in esecuzione è o meno un thread Daemon.
Crea thread daemon utilizzando il metodo setDaemon()
in Java
In questo esempio, usiamo il metodo setDaemon()
della classe Thread
per creare un thread daemon. Creiamo tre thread e due di essi sono impostati come thread daemon. Usiamo il metodo isDaemon()
per controllare se il thread in esecuzione è o meno un thread daemon. Vedi l’esempio sotto.
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();
}
}
Produzione:
Is this daemon thread: true
Is this daemon thread: false
Is this daemon thread: true
Crea thread daemon usando il metodo setDaemon()
in Java
Il thread del daemon è il thread a bassa priorità e viene eseguito sempre dietro i thread dell’utente. Possiamo vedere la priorità di un thread usando il metodo getPriority()
che restituisce un valore intero. Usiamo il metodo getName()
per recuperare il nome del thread in esecuzione corrente. Vedi l’esempio sotto.
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();
}
}
Produzione:
Is this daemon thread: true, Thread 1, 5
Is this daemon thread: false, Thread 2, 5
Is this daemon thread: true, Thread 3, 5
Crea thread daemon usando il metodo setDaemon()
in Java
Avviamo il thread dopo aver impostato un valore sul metodo setDaemon()
durante la creazione di un thread daemon. È essenziale perché se impostiamo un thread già in esecuzione come daemon, verrà generata un’eccezione. Chiamiamo il metodo start()
con thread1
e poi chiamiamo setDaemon()
, che non è consentito. Vedi l’esempio sotto.
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();
}
}
Produzione:
Is this daemon thread: false, Thread 1, 5
Exception in thread "main" java.lang.IllegalThreadStateException