Há um erro na explicação do video 3. Observe que a tarefa de limpeza não é executa por completa. Ela é interrompida quando não há mais nenhuma tarefa executando. (Vide .setDaemon(true)) Ao meu entender, a lógica do método deveria seguir seu fluxo normal e só depois a thread limpeza ser finalizada.