No exercício proposto, no método main definimos uma classe com SetDaemon(true) conforme abaixo: faxineira.setDaemon(true);
Na classe fazLimpeza, tinhamos entre outras coisas o código: System.out.println(nome + " Fazendo a limpeza"); try { Thread.sleep(10000); } catch (InterruptedException e) {e.printStackTrace();} System.out.println(nome + " Saindo do banheiro");
Enquanto haviam outras Threads em execução, esses últimos 2 prints estavam sendo executados normalmente, porém, quando a última thread terminou e só a "faxineira" estava em execução aparentemente foi finalizada sem concluir.
Console: Faxineira Entrando no banheiro Faxineira Fazendo a limpeza Faxineira Saindo do banheiro Pedro Entrando novamente no banheiro Pedro Fazendo coisa demorada Faxineira Aguardando na porta Pedro Dando descarga Pedro Lavando a mao Pedro Saindo do banheiro Faxineira Entrando no banheiro Faxineira Fazendo a limpeza <<<---- Faltou o print "Faxineira Saindo do banheiro"
Pergunta: Esse é o comportamento normal de uma thread daemon? Se sim, existe alguma maneira de "forçar" para que ela conclua todos os passos antes de ser encerrada?
Obrigado!