O que é uma daemon thread em Java e como ela difere de uma normal?
Olá a todos! Comecei a estudar multithreading em Java e me deparei com o conceito de "daemon thread". Li a documentação, mas não entendi completamente qual é a sua peculiaridade.
Tenho um exemplo simples: inicio uma thread que imprime uma mensagem a cada segundo. A thread principal (main) termina sua execução após 3 segundos. Eu esperava que o programa terminasse, mas ele continua rodando até que eu o pare manualmente.
public class DaemonTest {
public static void main(String[] args) throws InterruptedException {
Thread worker = new Thread(() -> {
while (true) {
System.out.println("Estou trabalhando...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
break;
}
}
});
worker.start();
Thread.sleep(3000);
System.out.println("Main terminou");
}
}
Por que o p