Класс 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 |
Создаёт FutureTask, который при запуске выполнит заданный Runnable и обеспечит возврат заданного результата методом get при успешном завершении. |
FutureTask |
Создаёт FutureTask, который при запуске выполнит заданный Callable. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
cancel |
Пытается отменить выполнение этой задачи. |
protected void |
done() |
Защищённый метод, вызываемый при переходе этой задачи в состояние isDone (при обычном завершении или отмене). |
Throwable |
exceptionNow() |
Возвращает исключение, выброшенное задачей, не дожидаясь его возникновения. |
V |
get() |
При необходимости ожидает завершения вычисления, а затем получает его результат. |
V |
get |
При необходимости ожидает завершения вычисления не дольше заданного времени, а затем получает его результат, если он доступен. |
boolean |
isCancelled() |
Возвращает true, если эта задача была отменена до её обычного завершения. |
boolean |
isDone() |
Возвращает true, если эта задача завершена. |
V |
resultNow() |
Возвращает вычисленный результат, не дожидаясь его получения. |
void |
run() |
Устанавливает для этого Future результат вычисления, если оно не было отменено (или уже вызвано, в этом случае последствия не определены). |
protected boolean |
runAndReset() |
Выполняет вычисление, не устанавливая его результат, а затем сбрасывает это future в исходное состояние; сброс не выполняется, если при вычислении возникает исключение или оно отменяется. |
protected void |
set |
Устанавливает для этого future заданное значение, если оно ещё не было установлено и future не было отменено. |
protected void |
setException |
Заставляет это 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 |
Показывает, равен ли этот объект другому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии. Финализация устарела и может быть удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова 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()
Futuretrue, если эта задача была отменена до её обычного завершения.- Определено в:
-
isCancelledв интерфейсеFuture<V> - Возвращает:
-
true, если эта задача была отменена до завершения
isDone
public boolean isDone()
Futuretrue, если эта задача завершена. Завершение может быть вызвано обычным окончанием, исключением или отменой — во всех этих случаях метод возвращает true.cancel
public boolean cancel(boolean mayInterruptIfRunning)
Futurecancel, она не должна запускаться. Если задача уже запущена, параметр 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();
exceptionNow
public Throwable exceptionNow()
FutureЭтот метод предназначен для случаев, когда вызывающий код знает, что задача уже завершилась с исключением.
- Определено в:
-
exceptionNowв интерфейсеFuture<V> - Возвращает:
- исключение, выброшенное задачей
- Начиная с:
- 19
state
done
protected void done()
isDone (при обычном завершении или отмене). Реализация по умолчанию ничего не делает. Подклассы могут переопределить этот метод для вызова обратных вызовов завершения или выполнения служебных действий. Обратите внимание: в реализации этого метода можно проверить состояние, чтобы определить, была ли задача отменена.set
protected void set(V v)
Этот метод вызывается внутри метода run() при успешном завершении вычисления. Вызов в других контекстах приводит к неопределённым последствиям. Любое переопределение этого метода в подклассах должно включать super.set(v).
- Параметры:
-
v— значение
setException
protected void setException(Throwable t)
ExecutionException с указанным исключением в качестве причины, если значение этого future ещё не было установлено и future не было отменено. Этот метод вызывается внутри метода run() при неудачном завершении вычисления.
- Параметры:
-
t— причина сбоя
run
public void run()
RunnableFuture- Определено в:
-
runв интерфейсеRunnable - Определено в:
-
runв интерфейсеRunnableFuture<V>
runAndReset
protected boolean runAndReset()
- Возвращает:
-
trueпри успешном выполнении и сбросе
toString
public String toString()
- Переопределяет:
-
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.