Avatar ·

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