Sobes.tech
Back to questions
Junior — Middle
68

Каким образом можно прервать выполнение потока исполнения в программе?

Companies where asked
RutubeRutube

Answer from AI

sobes.tech AI

В Android (и в Java в целом) для прерывания выполнения потока можно использовать метод interrupt() объекта Thread. Этот метод устанавливает флаг прерывания у потока, и если поток находится в состоянии ожидания (например, sleep(), wait()), то будет выброшено исключение InterruptedException.

Чтобы корректно прервать поток, внутри его кода нужно периодически проверять состояние прерывания с помощью метода Thread.currentThread().isInterrupted() или ловить InterruptedException.

Пример:

Thread thread = new Thread(() -> {
    try {
        while (!Thread.currentThread().isInterrupted()) {
            // Выполнение работы
            Thread.sleep(1000); // может выбросить InterruptedException
        }
    } catch (InterruptedException e) {
        // Поток был прерван во время сна
        Thread.currentThread().interrupt(); // восстановить флаг прерывания
    }
    // Завершение работы
});

thread.start();

// Прервать поток
thread.interrupt();

Также можно использовать флаги или другие механизмы синхронизации для более контролируемого завершения работы потока.