Testando a implementação de Daemon Thread notei que se ela for executada por último e dentro dela estiver executando Thread.sleep ela morre sem executar o restando do código da mesma.
A única solução que encontrei mas não sei se é a melhor foi contar quantas Threads ativas tenho e se o número for igual a 3, no meu caso não executo Thread.sleep. Existe outra maneira de corrigir esse problema?
Segue abaixo o código.
https://gist.github.com/denis-schimidt/a818d4576762271bddbc8f8b209925c5