Hola,
Una cosa importante en Java sobre los "demonios" es que los Threads marcados como demonios NO impiden que la maquina virtual java termine su ejecución.
Es decir, si tu lanzas una tarea en un thread aparte y tu proceso normal termina, la maquina virtual java no acaba si no que espera a que tu thread se pare. Eso deja a veces los programas colgados
. En cambio, si el Thread que lanzas aparte es del tipo demonio (se le dice con el método setDaemon(boolean)) cuando el proceso normal termina, tu thread demonio se elimina y la maquina virtual java se para.
Un detalle importante a tener en cuenta.
Un saludo