Метод isDone
Метод isDone класса Future проверяет,
завершилась ли асинхронная задача. Метод не принимает
параметров и возвращает boolean. Значение
true возвращается в трёх случаях: задача успешно
выполнена, задача была отменена или задача завершилась
с исключением. Если задача ещё выполняется или ожидает
запуска, метод вернёт false.
Важно понимать, что isDone возвращает
true и при нормальном завершении, и при
отмене, и при ошибке. Если нужно отличить эти случаи
друг от друга, используйте методы isCancelled
или get.
Синтаксис
boolean isDone()
Пример
Давайте создадим задачу, которая выполняется некоторое время, и проверим её состояние сразу после запуска:
import java.util.concurrent.*;
public class Main
{
public static void main(String[] args) throws Exception
{
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return "abcde";
});
System.out.println(future.isDone());
future.join();
System.out.println(future.isDone());
}
}
Результат выполнения кода:
false
true
Пример
Давайте проверим, что метод возвращает true
и для уже завершённой задачи, созданной через
completedFuture:
import java.util.concurrent.*;
public class Main
{
public static void main(String[] args)
{
CompletableFuture<String> future = CompletableFuture.completedFuture("abcde");
System.out.println(future.isDone());
}
}
Результат выполнения кода:
true
Пример
Давайте отменим задачу и убедимся, что
isDone также вернёт true:
import java.util.concurrent.*;
public class Main
{
public static void main(String[] args) throws Exception
{
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
try
{
Thread.sleep(5000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return "12345";
});
future.cancel(true);
System.out.println(future.isDone());
System.out.println(future.isCancelled());
}
}
Результат выполнения кода:
true
true
Смотрите также
-
класс
Future,
который представляет результат асинхронной задачи -
метод
get,
который ожидает завершения задачи и возвращает результат -
метод
isCancelled,
который проверяет, была ли задача отменена -
метод
cancel,
который отменяет выполнение задачи