Spec-Zone.ru › OpenJDK 25

Класс FutureTask<V>

java.lang.Object
java.util.concurrent.FutureTask<V>
Параметры типа:
V — тип результата, возвращаемого методами get этого FutureTask
Все реализуемые интерфейсы:
Runnable, Future<V>, RunnableFuture<V>
public class FutureTask<V> extends Object implements RunnableFuture<V>
Отменяемое асинхронное вычисление. Этот класс предоставляет базовую реализацию Future с методами для запуска и отмены вычисления, проверки его завершения и получения результата. Результат можно получить только после завершения вычисления; методы get блокируют выполнение, если вычисление ещё не завершено. После завершения вычисление нельзя запустить повторно или отменить (если только оно не вызывается с помощью runAndReset()).

Объект FutureTask можно использовать для обёртывания объекта Callable или Runnable. Поскольку FutureTask реализует Runnable, объект FutureTask можно передать в Executor для выполнения.

Помимо использования в качестве самостоятельного класса, этот класс предоставляет функциональность protected, которая может быть полезна при создании пользовательских классов задач.

Начиная с версии:
1.5

Краткое описание вложенных классов

Вложенные классы и интерфейсы, объявленные в интерфейсе Future

Future.State

Краткое описание конструкторов

Конструктор Описание
FutureTask(Runnable runnable, V result)
Создаёт объект FutureTask, который при запуске выполнит заданный Runnable и обеспечит возврат заданного результата методом get при успешном завершении.
FutureTask(Callable<V> callable)
Создаёт объект FutureTask, который при запуске выполнит заданный Callable.

Краткое описание методов

Модификатор и тип Метод Описание
boolean cancel(boolean mayInterruptIfRunning)
Пытается отменить выполнение этой задачи.
protected void done()
Защищённый метод, вызываемый при переходе этой задачи в состояние isDone (как при обычном завершении, так и при отмене).
Throwable exceptionNow()
Возвращает исключение, выброшенное задачей, не ожидая завершения.
V get()
При необходимости ожидает завершения вычисления, а затем возвращает его результат.
V get(long timeout, TimeUnit unit)
При необходимости ожидает завершения вычисления не дольше заданного времени, а затем возвращает его результат, если он доступен.
boolean isCancelled()
Возвращает true, если эта задача была отменена до её обычного завершения.
boolean isDone()
Возвращает true, если эта задача завершена.
V resultNow()
Возвращает вычисленный результат, не ожидая завершения.
void run()
Устанавливает результатом этого Future результат вычисления, если Future не был отменён.
protected boolean runAndReset()
Выполняет вычисление, не устанавливая его результат, а затем сбрасывает этот Future в исходное состояние; операция не удаётся, если при вычислении возникает исключение или оно отменяется.
protected void set(V v)
Устанавливает для этого Future заданное значение, если значение ещё не было установлено и Future не был отменён.
protected void setException(Throwable t)
Заставляет этот Future сообщить об исключении ExecutionException, указав заданную ошибку в качестве причины, если значение для Future ещё не было установлено и Future не был отменён.
Future.State state()
Возвращает состояние вычисления.
String toString()
Возвращает строковое представление этого FutureTask.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

FutureTask

public FutureTask(Callable<V> callable)
Создаёт объект FutureTask, который при запуске выполнит заданный Callable.
Параметры:
callable — задача callable
Исключения:
NullPointerException — если callable равен null

FutureTask

public FutureTask(Runnable runnable, V result)
Создаёт объект FutureTask, который при запуске выполнит заданный Runnable и обеспечит возврат заданного результата методом get при успешном завершении.
Параметры:
runnable — задача runnable
result — результат, возвращаемый при успешном завершении. Если особый результат не требуется, рассмотрите возможность использования конструкции вида: Future<?> f = new FutureTask<Void>(runnable, null)
Исключения:
NullPointerException — если runnable равен null

Подробное описание методов

isCancelled

public boolean isCancelled()
Описание скопировано из интерфейса: Future
Возвращает true, если эта задача была отменена до её обычного завершения.
Переопределяет:
isCancelled в интерфейсе Future<V>
Возвращает:
true, если эта задача была отменена до завершения

isDone

public boolean isDone()
Описание скопировано из интерфейса: Future
Возвращает true, если эта задача завершена. Завершение может произойти в результате обычного окончания, исключения или отмены — во всех этих случаях метод возвращает true.
Переопределяет:
isDone в интерфейсе Future<V>
Возвращает:
true, если эта задача завершена

cancel

public boolean cancel(boolean mayInterruptIfRunning)
Описание скопировано из интерфейса: Future
Пытается отменить выполнение этой задачи. Этот метод не действует, если задача уже завершена или отменена либо её невозможно отменить по какой-либо другой причине. В противном случае, если эта задача ещё не запущена на момент вызова cancel, она не должна быть запущена. Если задача уже запущена, параметр mayInterruptIfRunning определяет, будет ли прерван поток, выполняющий эту задачу (если реализация его отслеживает), в попытке остановить задачу.

Возвращаемое этим методом значение не обязательно указывает на то, что задача теперь отменена; используйте Future.isCancelled().

Переопределяет:
cancel в интерфейсе Future<V>
Параметры:
mayInterruptIfRunning — true, если поток, выполняющий эту задачу, следует прервать (если реализация его отслеживает); в противном случае выполняющимся задачам разрешается завершиться
Возвращает:
false, если задачу не удалось отменить, обычно потому, что она уже завершена; в противном случае — true. Если два или более потока пытаются отменить задачу, как минимум один из них возвращает true. Реализации могут предоставлять более строгие гарантии.

get

public V get() throws InterruptedException, ExecutionException
Описание скопировано из интерфейса: Future
При необходимости ожидает завершения вычисления, а затем возвращает его результат.
Переопределяет:
get в интерфейсе Future<V>
Возвращает:
вычисленный результат
Исключения:
CancellationException — если вычисление было отменено
InterruptedException — если текущий поток был прерван во время ожидания
ExecutionException — если при вычислении возникло исключение

get

public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
Описание скопировано из интерфейса: Future
При необходимости ожидает завершения вычисления не дольше заданного времени, а затем возвращает его результат, если он доступен.
Переопределяет:
get в интерфейсе Future<V>
Параметры:
timeout — максимальное время ожидания
unit — единица времени для аргумента тайм-аута
Возвращает:
вычисленный результат
Исключения:
CancellationException — если вычисление было отменено
InterruptedException — если текущий поток был прерван во время ожидания
ExecutionException — если при вычислении возникло исключение
TimeoutException — если время ожидания истекло

resultNow

public V resultNow()
Описание скопировано из интерфейса: Future
Возвращает вычисленный результат, не ожидая завершения.

Этот метод предназначен для случаев, когда вызывающая сторона знает, что задача уже успешно завершена, например при фильтрации потока объектов Future для выбора успешно завершённых задач и использовании операции отображения для получения потока результатов.

    results = futures.stream()
               .filter(f -> f.state() == Future.State.SUCCESS)
               .map(Future::resultNow)
               .toList();
Переопределяет:
resultNow в интерфейсе Future<V>
Возвращает:
вычисленный результат
Начиная с версии:
19

exceptionNow

public Throwable exceptionNow()
Описание скопировано из интерфейса: Future
Возвращает исключение, выброшенное задачей, не ожидая завершения.

Этот метод предназначен для случаев, когда вызывающая сторона знает, что задача уже завершилась с исключением.

Переопределяет:
exceptionNow в интерфейсе Future<V>
Возвращает:
исключение, выброшенное задачей
Начиная с версии:
19

state

public Future.State state()
Описание скопировано из интерфейса: Future
Возвращает состояние вычисления.
Переопределяет:
state в интерфейсе Future<V>
Возвращает:
состояние вычисления
Начиная с версии:
19

done

protected void done()
Защищённый метод, вызываемый при переходе этой задачи в состояние isDone (как при обычном завершении, так и при отмене). Реализация по умолчанию ничего не делает. Подклассы могут переопределить этот метод для вызова обратных вызовов завершения или выполнения служебных действий. Обратите внимание, что внутри реализации этого метода можно проверить состояние, чтобы определить, была ли эта задача отменена.

set

protected void set(V v)
Устанавливает для этого Future заданное значение, если значение ещё не было установлено и Future не был отменён.

Этот метод вызывается внутри метода run() при успешном завершении вычисления.

Параметры:
v — значение

setException

protected void setException(Throwable t)
Заставляет этот Future сообщить об исключении ExecutionException, указав заданную ошибку в качестве причины, если значение для Future ещё не было установлено и Future не был отменён.

Этот метод вызывается внутри метода run() при неудачном выполнении вычисления.

Параметры:
t — причина сбоя

run

public void run()
Описание скопировано из интерфейса: RunnableFuture
Устанавливает результатом этого Future результат вычисления, если Future не был отменён.
Переопределяет:
run в интерфейсе Runnable
Переопределяет:
run в интерфейсе RunnableFuture<V>

runAndReset

protected boolean runAndReset()
Выполняет вычисление, не устанавливая его результат, а затем сбрасывает этот Future в исходное состояние; операция не удаётся, если при вычислении возникает исключение или оно отменяется. Этот метод предназначен для задач, которые по своей сути выполняются более одного раза.
Возвращает:
true при успешном выполнении и сбросе

toString

public String toString()
Возвращает строковое представление этого FutureTask.
Переопределяет:
toString в классе Object
Требования к реализации:
Реализация по умолчанию возвращает строку, идентифицирующую этот FutureTask и его состояние завершения. Состояние в квадратных скобках содержит одну из строк "Completed Normally", "Completed Exceptionally", "Cancelled" или "Not completed".
Возвращает:
строковое представление этого FutureTask

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/FutureTask.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API