РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1088 of 1163 menu

Метод 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,
    который отменяет выполнение задачи
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить