Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
1098 of 1172 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить