Метод isTerminated
Метод isTerminated проверяет, завершился ли
пул потоков ExecutorService. Метод возвращает
true, если после вызова shutdown или
shutdownNow все задачи завершили выполнение.
Если пул еще работает или задачи остались в очереди,
метод вернет false. Параметров метод не принимает.
Важно понимать: метод не останавливает пул и не ждет
завершения задач. Он лишь сообщает текущее состояние.
Чтобы дождаться завершения, используйте
awaitTermination.
Синтаксис
executorService.isTerminated()
Пример
Давайте создадим пул из одного потока, отправим задачу и проверим состояние до и после остановки:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main
{
public static void main(String[] args) throws InterruptedException
{
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(() -> {
System.out.println("Task is running");
});
System.out.println("Before shutdown: " + executor.isTerminated());
executor.shutdown();
while (!executor.isTerminated())
{
Thread.sleep(10);
}
System.out.println("After shutdown: " + executor.isTerminated());
}
}
Результат выполнения кода:
"Task is running"
"Before shutdown: false"
"After shutdown: true"
Пример
Давайте проверим состояние пула сразу после
shutdownNow, не дожидаясь завершения задач:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main
{
public static void main(String[] args) throws InterruptedException
{
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> {
try
{
Thread.sleep(500);
}
catch (InterruptedException e)
{
System.out.println("Task interrupted");
}
});
executor.shutdownNow();
System.out.println("Right after shutdownNow: " + executor.isTerminated());
while (!executor.isTerminated())
{
Thread.sleep(10);
}
System.out.println("Finally terminated: " + executor.isTerminated());
}
}
Результат выполнения кода:
"Task interrupted"
"Right after shutdownNow: false"
"Finally terminated: true"
Смотрите также
-
метод
awaitTermination,
который ожидает завершения всех задач -
метод
shutdown,
который запускает плавную остановку пула -
метод
shutdownNow,
который немедленно останавливает пул -
метод
isShutdown,
который проверяет, был ли вызван shutdown