Класс 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

Конструкторы

КонструкторОписание
FutureTask​(Runnable runnable, V result)

Создаёт FutureTask, который при запуске выполнит заданный Runnable, и организует, чтобы get вернул заданный результат при успешном завершении.

FutureTask​(Callable<V> callable)

Создаёт FutureTask, который при запуске выполнит заданный Callable.

Методы

Модификатор и типМетодОписание
protected voiddone()

Защищённый метод, вызываемый, когда эта задача переходит в состояние isDone (обычным путём или путём отмены).

Vget()

Если необходимо, ожидает завершения вычисления и возвращает его результат.

Vget​(long timeout, TimeUnit unit)

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

protected booleanrunAndReset()

Выполняет вычисление без установки результата, а затем сбрасывает эту будущую задачу в начальное состояние. Не выполняется, если вычисление сталкивается с исключением или отменяется.

protected voidset​(V v)

Устанавливает результат этой будущей задачи в заданное значение, если эта будущая задача ещё не была установлена или не была отменена.

protected voidsetException​(Throwable t)

Заставляет эту будущую задачу сообщить об ExecutionException с заданным исключением в качестве причины, если эта будущая задача уже не была установлена или не была отменена.

StringtoString()

Возвращает строковое представление этой FutureTask.

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

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

Методы, объявленные в интерфейсе java.util.concurrent.Future

cancel, isCancelled, isDone

Методы, объявленные в интерфейсе java.util.concurrent.RunnableFuture

run

Конструкторы

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

Методы

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 - единица измерения времени для аргумента timeout
Возвращает:
вычисленный результат
Исключения:
CancellationException - если вычисление было отменено
InterruptedException - если текущий поток был прерван во время ожидания
ExecutionException - если вычисление выбросило исключение
TimeoutException - если ожидание истекло

done

protected void done()

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

set

protected void set(V v)

Устанавливает результат этой будущей задачи в заданное значение, если эта будущая задача ещё не была установлена или не была отменена.

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

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

setException

protected void setException(Throwable t)

Заставляет эту будущую задачу сообщить об ExecutionException с заданным исключением в качестве причины, если эта будущая задача уже не была установлена или не была отменена.

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

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

runAndReset

protected boolean runAndReset()

Выполняет вычисление без установки результата, а затем сбрасывает эту будущую задачу в начальное состояние, если вычисление сталкивается с исключением или отменяется. Предназначен для задач, которые выполняются многократно.

Возвращает:
true если успешно выполнено и сброшено

toString

public String toString()

Возвращает строковое представление этой FutureTask.

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

© 1993, 2020, 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/11/docs/api/java.base/java/util/concurrent/FutureTask.html

Spec-Zone .ru
спецификации, руководства, описания, API