Класс 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
Конструкторы
| Конструктор | Описание |
|---|---|
FutureTask(Runnable runnable,
V result) | Создаёт |
FutureTask(Callable<V> callable) | Создаёт |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected void | done() | Защищённый метод, вызываемый, когда эта задача переходит в состояние |
V | get() | Если необходимо, ожидает завершения вычисления и возвращает его результат. |
V | get(long timeout,
TimeUnit unit) | Если необходимо, ожидает завершения вычисления не более заданного времени и возвращает его результат, если он доступен. |
protected boolean | runAndReset() | Выполняет вычисление без установки результата, а затем сбрасывает эту будущую задачу в начальное состояние. Не выполняется, если вычисление сталкивается с исключением или отменяется. |
protected void | set(V v) | Устанавливает результат этой будущей задачи в заданное значение, если эта будущая задача ещё не была установлена или не была отменена. |
protected void | setException(Throwable t) | Заставляет эту будущую задачу сообщить об |
String | toString() | Возвращает строковое представление этой 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