Спросят с вероятностью 12%
Future представляет собой абстракцию, которая обеспечивает результат асинхронной операции. Он является интерфейсом, который находится в пакете java.util.concurrent. Он используется для представления результата, который будет получен в будущем, после завершения выполнения асинхронной задачи. Онпредоставляет методы для проверки завершения задачи, получения результата выполнения, отмены задачи и проверки её состояния.Основные методы интерфейса:
✅
boolean cancel(boolean mayInterruptIfRunning): Пытается отменить выполнение задачи. Параметр mayInterruptIfRunning указывает, следует ли прерывать выполнение задачи, если она уже запущена.✅
boolean isCancelled(): Возвращает true, если задача была отменена до её нормального завершения.✅
boolean isDone(): Возвращает true, если задача завершилась, была отменена или по каким-либо другим причинам не может быть продолжена.✅
V get(): Ожидает завершения задачи и возвращает её результат. Метод блокируется до тех пор, пока результат не станет доступен.✅
V get(long timeout, TimeUnit unit): Ожидает завершения задачи в течение заданного времени и возвращает её результат, если он доступен. Если результат не доступен в течение указанного времени, выбрасывается исключение TimeoutException.Применение:
Он часто используется в сочетании с пулом потоков (
ExecutorService), который предоставляет методы для асинхронного выполнения задач. Например, метод submit(Callable<T> task) пула потоков возвращает объект Future<T>, который можно использовать для получения результата асинхронной задачи.Пример:
ExecutorService executor = Executors.newCachedThreadPool();
Callable<Integer> task = () -> {
// Имитация длительной операции
TimeUnit.SECONDS.sleep(1);
return 123;
};
Future<Integer> future = executor.submit(task);
// Другие операции могут выполняться здесь, пока асинхронная задача выполняется
try {
// Получение результата асинхронной задачи
Integer result = future.get(); // Блокируется до завершения задачи
System.out.println("Результат: " + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
executor.shutdown();
Future является мощным инструментом для работы с асинхронными операциями, позволяя управлять выполнением задач, получать их результаты или отменять задачи. Это делает Future важной частью многопоточного программирования и асинхронной обработки.👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых