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

Метод isCancelled

Метод isCancelled класса Future возвращает true, если задача была отменена до того, как она завершилась обычным способом. Во всех остальных случаях метод возвращает false. Метод не принимает параметров и не выбрасывает проверяемых исключений. Отмена задачи выполняется с помощью метода cancel. Если задача уже успела завершиться, была отменена или по какой-то причине не может быть отменена, метод cancel вернёт false, а isCancelled в таком случае тоже вернёт false.

Важно понимать: isCancelled проверяет именно факт отмены, а не факт завершения задачи. Для проверки завершения (любым способом) используется метод isDone.

Синтаксис

boolean isCancelled()

Пример

Давайте создадим задачу через CompletableFuture, отменим её и проверим результат методом isCancelled:

import java.util.concurrent.CompletableFuture; public class Main { public static void main(String[] args) { CompletableFuture<String> future = new CompletableFuture<>(); boolean cancelledBefore = future.isCancelled(); future.cancel(true); boolean cancelledAfter = future.isCancelled(); System.out.println(cancelledBefore); System.out.println(cancelledAfter); } }

Результат выполнения кода:

false true

Пример

Давайте проверим, что для уже завершённой задачи метод isCancelled вернёт false, даже если после завершения вызвать cancel:

import java.util.concurrent.CompletableFuture; public class Main { public static void main(String[] args) { CompletableFuture<String> future = CompletableFuture.completedFuture("abcde"); boolean cancelled = future.isCancelled(); boolean cancelResult = future.cancel(true); System.out.println(cancelled); System.out.println(cancelResult); } }

Результат выполнения кода:

false false

Пример

Давайте отменим асинхронную задачу, созданную через supplyAsync, и проверим её состояние:

import java.util.concurrent.CompletableFuture; public class Main { public static void main(String[] args) { CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> { try { Thread.sleep(5000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } return "abcde"; }); future.cancel(true); System.out.println(future.isCancelled()); System.out.println(future.isDone()); } }

Результат выполнения кода:

true true

Смотрите также

  • класс CompletableFuture,
    который представляет асинхронную задачу
  • метод cancel,
    который отменяет выполнение задачи
  • метод isDone,
    который проверяет завершение задачи
  • метод get,
    который ожидает результат выполнения задачи
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить