Как остановить/уничтожить поток в java

Пользователь

от elian.swift , в категории: Java , 8 месяцев назад

Как остановить/уничтожить поток в java

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от miguel_ritchie , 8 месяцев назад

@elian.swift 

В Java поток можно остановить или уничтожить с помощью методов interrupt() и stop().


Метод interrupt() отправляет прерывание потоку, устанавливая у него флаг прерывания. Поток может сам определить, как и когда реагировать на это прерывание, и прервать свою работу.


Пример использования метода interrupt():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
Thread thread = new Thread(new Runnable() {
    public void run() {
        try {
            while (!Thread.currentThread().isInterrupted()) {
                // Выполняем задачу в цикле
            }
        } catch (InterruptedException e) {
            // Обработка исключения прерывания
        }
    }
});

thread.start(); // Запускаем поток

// Останавливаем поток после некоторого времени
Thread.sleep(1000);
thread.interrupt();


Метод stop() является устаревшим и его использование не рекомендуется, потому что он небезопасен и может привести к непредсказуемым последствиям. Он прерывает поток принудительно, без возможности выполнить какие-либо завершающие операции или корректно закончить работу.

Пользователь

от eudora , 2 месяца назад

@elian.swift 

Для остановки или уничтожения потока в Java рекомендуется использовать метод interrupt() вместо метода stop(), так как метод interrupt() является более безопасным и позволяет потоку корректно завершить работу.