Sobes.tech
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.