Junior — Middle
Como pode interromper a execução de uma thread num programa?
sobes.tech IA
Resposta da IA
No Android (e em Java em geral), para interromper a execução de uma thread, pode-se usar o método interrupt() do objeto Thread. Este método define a flag de interrupção na thread, e se a thread estiver em estado de espera (por exemplo, sleep(), wait()), uma exceção InterruptedException será lançada.
Para interromper corretamente uma thread, dentro do seu código deve-se verificar periodicamente o estado de interrupção usando o método Thread.currentThread().isInterrupted() ou capturando InterruptedException.
Exemplo:
Thread thread = new Thread(() -> {
try {
while (!Thread.currentThread().isInterrupted()) {
// Executar trabalho
Thread.sleep(1000); // pode lançar InterruptedException
}
} catch (InterruptedException e) {
// A thread foi interrompida durante o sono
Thread.currentThread().interrupt(); // restaurar a flag de interrupção
}
// Encerramento do trabalho
});
thread.start();
// Interromper a thread
thread.interrupt();
Também é possível usar flags ou outros mecanismos de sincronização para uma finalização mais controlada do trabalho da thread.