Spec-Zone.ru › OpenJDK 24

Класс FutureTask<V>

java.lang.Object
java.util.concurrent.FutureTask<V>
Type Parameters:
V - Тип результата, возвращаемый методами этого 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 функциональность, которая может быть полезной при создании настраиваемых классов задач.

Since:
1.5

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

Вложенные классы/интерфейсы, объявленные в интерфейсе java.util.concurrent.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()
Устанавливает результат этой задачи в соответствии с результатом её вычисления, если она не была отменена.
protected boolean runAndReset()
Выполняет вычисление без установки её результата, затем сбрасывает эту задачу в начальное состояние, если вычисление не встретило исключение или не было отменено.
protected void set(V v)
Устанавливает результат этой задачи в заданное значение, если эта задача ещё не была установлена или не была отменена.
protected void setException(Throwable t)
Заставляет эту задачу сообщить об ExecutionException с заданным исключением в качестве причины, если эта задача ещё не была установлена или не была отменена.
Future.State state()
Возвращает состояние вычисления.
String toString()
Возвращает строковое представление этой задачи FutureTask.

Методы, объявленные в классе java.lang.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)
Устанавливает результат этого будущего в заданное значение, если это будущее ещё не установлено или не было отменено.

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

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

setException

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

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

Параметры:
t - причина ошибки

run

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

runAndReset

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

toString

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/FutureTask.html

Spec-Zone.ru

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