Как остановить/убить продолжительный поток Java во время выполнения? тайм-аут -> отменено -> прерванное состояние

Опубликовано: 2021-07-17

Как убить поток Java, для завершения которого требуется больше времени, чем ожидалось? тайм-аут -> отменено -> состояние прерывания

Вы когда-нибудь задумывались, как убить длинный поток Java? У вас есть какие-либо из приведенных ниже вопросов?

  • Убить/остановить поток через определенный промежуток времени
  • Уничтожение потока после определенного срока в Java
  • Как убить поток Java
  • Как остановить поток в Java на примере
  • как остановить поток в примере кода Java
  • как остановить поток в java без использования метода остановки

Если у вас есть какие-либо из приведенных ниже вопросов, то вы находитесь в правильном месте. Сегодня мы рассмотрим простой пример, демонстрирующий способы остановки долго выполняющегося потока в Java8.

Что такое логика:

  1. Создать класс CrunchifyJavaTaskTimeout.java
  2. Создайте исполнитель Java Thread только с 1 размером пула потоков.
  3. Создайте 4 будущих задачи объекта CrunchifyRunner с тайм-аутом 3 секунды.
  4. CrunchifyRunner.java — это простой класс, реализующий метод call() .
    • Он вводит 20 seconds задержку, если futureTask = 4
  5. Как только будущее достигает 3 seconds , оно создает исключение тайм-аута, если поток все еще работает
    • По истечении времени нам нужно отменить задачу, используя crunchifyFuture. cancel( true ) ;
    • Как только futureTask будет отменен, он вызовет InterruptedException (Вызывается, когда поток ожидает, спит или иным образом занят, и поток прерывается либо до, либо во время действия. Иногда метод может захотеть проверить, был ли текущий поток прерван, и если да, то немедленно кинуть это исключение.)

Давайте начнем:

Шаг 1. Создайте класс CrunchifyRunner.java.

Шаг 2. Создайте класс CrunchifyJavaTaskTimeout.java.

Шаг 3

Щелкните правой кнопкой мыши CrunchifyJavaTaskTimeout.java и запустите его как приложение Java.

Ниже вы увидите результат в консоли Eclipse.

Как остановить java-поток во время выполнения

Дайте мне знать, если у вас есть какие-либо вопросы по этой теме.