Daemon Thread em Java
-
Criar thread daemon usando o método
setDaemon()
em Java -
Criar thread daemon usando o método
setDaemon()
em Java -
Criar thread daemon usando o método
setDaemon()
em Java
Este tutorial irá apresentar o que é o encadeamento daemon e como criar um encadeamento daemon em Java.
Em Java, um encadeamento daemon é um encadeamento especial que suporta encadeamentos em segundo plano para outros encadeamentos. Java usa esses encadeamentos para servir a propósitos especiais para encadeamentos do usuário e coleta de lixo, etc.
Para criar um encadeamento daemon, Java fornece o método setDaemon()
que recebe um argumento booleano. O método isDaemon()
pode verificar se o encadeamento em execução atual é um encadeamento Daemon ou não.
Criar thread daemon usando o método setDaemon()
em Java
Neste exemplo, usamos o método setDaemon()
da classe Thread
para criar um daemon thread. Nós criamos três threads, e dois deles são definidos como threads daemon. Usamos o método isDaemon()
para verificar se o thread em execução atual é um thread daemon ou não. Veja o exemplo abaixo.
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();
}
}
Resultado:
Is this daemon thread : true Is this daemon thread : false Is this daemon thread : true
Criar thread daemon usando o método setDaemon()
em Java
O encadeamento daemon é o encadeamento de baixa prioridade e sempre é executado atrás dos encadeamentos do usuário. Podemos ver a prioridade de uma thread usando o método getPriority()
que retorna um valor inteiro. Usamos o método getName()
para buscar o nome do thread em execução atual. Veja o exemplo abaixo.
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();
}
}
Resultado:
Is this daemon thread: true, Thread 1, 5
Is this daemon thread: false, Thread 2, 5
Is this daemon thread: true, Thread 3, 5
Criar thread daemon usando o método setDaemon()
em Java
Iniciamos a thread após definir um valor para o método setDaemon()
ao criar uma thread daemon. É essencial porque se definirmos um thread já em execução como um daemon, ele lançará uma exceção. Chamamos o método start()
com thread1
e depois chamamos setDaemon()
, o que não é permitido. Veja o exemplo abaixo.
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();
}
}
Resultado:
Is this daemon thread: false, Thread 1, 5
Exception in thread "main" java.lang.IllegalThreadStateException