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

Метод get

Метод get класса CompletableFuture блокирует текущий поток до тех пор, пока асинхронная задача не завершится, и возвращает её результат. Если задача завершилась с исключением, метод выбрасывает ExecutionException. Если текущий поток был прерван во время ожидания, выбрасывается InterruptedException. Без параметров метод ожидает результат бесконечно долго. В первом параметре можно передать максимальное время ожидания, а во второй - единицу измерения времени. Если за указанное время задача не завершится, будет выброшено TimeoutException.

Синтаксис

future.get() future.get(timeout, unit)

Пример

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

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

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

"abcde"

Пример

Давайте создадим асинхронную задачу, которая возвращает число, и получим его результат:

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

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

12345

Пример

Давайте укажем максимальное время ожидания результата с помощью второго и третьего параметров:

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

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

"abcde"

Пример

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

import java.util.concurrent.CompletableFuture; public class Main { public static void main(String[] args) throws Exception { CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> { throw new RuntimeException("error"); }); try { String res = future.get(); System.out.println(res); } catch (Exception e) { System.out.println(e.getClass().getSimpleName()); } } }

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

"ExecutionException"

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

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