Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Интерфейс Описание
static enum  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 результат вычисления, если оно не было отменено (или уже вызвано, в этом случае последствия не определены).
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
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии.
Финализация устарела и может быть удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени.

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

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() при успешном завершении вычисления. Вызов в других контекстах приводит к неопределённым последствиям. Любое переопределение этого метода в подклассах должно включать super.set(v).

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

setException

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

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

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

run

public void run()
Описание скопировано из интерфейса: RunnableFuture
Устанавливает для этого 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, 2026, 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.

Spec-Zone.ru

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