Класс FutureTask<V>
- Type Parameters:
-
V- Тип результата, возвращаемый методами этого FutureTask
- All Implemented Interfaces:
-
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
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
FutureTask |
Создаёт FutureTask, который при запуске выполнит указанный Runnable, и организует возврат указанного результата при успешном завершении. |
FutureTask |
Создаёт FutureTask, который при запуске выполнит указанный Callable. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
cancel |
Попытка отменить выполнение задачи. |
protected void |
done() |
Защищённый метод, вызываемый при переходе этой задачи в состояние isDone (как нормальным путём, так и через отмену). |
V |
get() |
Ожидает завершения вычисления и затем возвращает его результат. |
V |
get |
Ожидает завершения вычисления в течение заданного времени и возвращает его результат, если он доступен. |
boolean |
isCancelled() |
Возвращает значение true, если задача была отменена до нормального завершения. |
boolean |
isDone() |
Возвращает значение true, если задача завершилась. |
void |
run() |
Устанавливает результат этой FutureTask в результат её вычисления, если она не была отменена. |
protected boolean |
runAndReset() |
Выполняет вычисление без установки результата, а затем сбрасывает эту FutureTask в начальное состояние, если при этом вычисление не встретило исключение или не было отменено. |
protected void |
set |
Устанавливает результат этой FutureTask в заданное значение, если эта FutureTask ещё не была установлена или отменена. |
protected void |
setException |
Устанавливает для этой FutureTask исключение ExecutionException с указанным исключением в качестве причины, если эта FutureTask ещё не была установлена или отменена. |
String |
toString() |
Возвращает строковое представление этой FutureTask. |
Подробное описание конструкторов
FutureTask
public FutureTask(Callable<V> callable)
FutureTask, который при выполнении будет выполнять заданный Callable. - Параметры:
-
callable- выполнимая задача - Исключения:
-
NullPointerException- если выполнимая задача равна null
FutureTask
public FutureTask(Runnable runnable, V result)
FutureTask, который при выполнении будет выполнять заданный Runnable, и гарантирует, что get вернёт заданный результат при успешном завершении. - Параметры:
-
runnable- выполнимая задача -
result- результат, который должен быть возвращён при успешном завершении. Если вам не нужен конкретный результат, рассмотрите конструкции вида:Future<?> f = new FutureTask<Void>(runnable, null) - Исключения:
-
NullPointerException- если выполнимая задача равна null
Подробное описание методов
isCancelled
public boolean isCancelled()
Futuretrue, если эта задача была отменена до её нормального завершения.- Определено в:
-
isCancelledв интерфейсеFuture<V> - Возвращает:
-
true, если эта задача была отменена до завершения
isDone
public boolean isDone()
Futuretrue, если эта задача завершилась. Завершение может быть вызвано нормальным завершением, исключением или отмененой — во всех этих случаях этот метод вернёт true. - Определено в:
-
isDoneв интерфейсеFuture<V> - Возвращает:
-
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- если ожидание истекло
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()
- Переопределяет:
-
toStringв классеObject - Требования к реализации:
- Реализация по умолчанию возвращает строку, идентифицирующую этот FutureTask, а также его состояние завершения. Состояние в скобках содержит одну из строк
"Completed Normally","Completed Exceptionally","Cancelled", или"Not completed". - Возвращает:
- строковое представление этого FutureTask
© 1993, 2021, 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/17/docs/api/java.base/java/util/concurrent/FutureTask.html