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

Интерфейс Future

Интерфейс Future представляет результат асинхронного вычисления. Он позволяет проверить, завершено ли вычисление, дождаться его завершения и получить результат. Объект Future обычно возвращается методами вроде submit у ExecutorService или является частью CompletableFuture. Метод get без параметров блокирует поток до получения результата, а с параметрами принимает время ожидания и единицу измерения. Метод cancel пытается отменить задачу, принимая флаг о возможности прерывания.

Синтаксис

V get() V get(long timeout, TimeUnit unit) boolean cancel(boolean mayInterruptIfRunning) boolean isDone() boolean isCancelled()

Пример

Давайте создадим асинхронную задачу через CompletableFuture и получим её результат с помощью метода get:

import java.util.concurrent.CompletableFuture; import java.util.concurrent.Future; public class Main { public static void main(String[] args) throws Exception { Future<String> future = CompletableFuture.supplyAsync(() -> { return "abcde"; }); String res = future.get(); System.out.println(res); } }

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

"abcde"

Пример

Давайте проверим, завершена ли задача, с помощью метода isDone:

import java.util.concurrent.CompletableFuture; import java.util.concurrent.Future; public class Main { public static void main(String[] args) throws Exception { Future<Integer> future = CompletableFuture.supplyAsync(() -> { return 12345; }); boolean res = future.isDone(); System.out.println(res); future.get(); System.out.println(future.isDone()); } }

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

false true

Пример

Давайте отменим задачу с помощью метода cancel и проверим её состояние через isCancelled:

import java.util.concurrent.CompletableFuture; import java.util.concurrent.Future; public class Main { public static void main(String[] args) throws Exception { Future<String> future = CompletableFuture.supplyAsync(() -> { return "abcde"; }); boolean res = future.cancel(true); System.out.println(res); System.out.println(future.isCancelled()); } }

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

true true

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

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