Spec-Zone.ru › OpenJDK 8

Класс 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(Callable<V> callable)

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

FutureTask(Runnable runnable, V result)

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

Методы

Модификатор и тип Метод и описание
boolean cancel(boolean mayInterruptIfRunning)

Попытка отменить выполнение этой задачи.

protected void done()

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

V get()

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

V get(long timeout, TimeUnit unit)

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

boolean isCancelled()

Возвращает true , если эта задача была отменена до нормального завершения.

boolean isDone()

Возвращает true , если эта задача завершена.

void run()

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

protected boolean runAndReset()

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

protected void set(V v)

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

protected void setException(Throwable t)

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

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, 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.isDone() всегда будут возвращать true. Последующие вызовы Future.isCancelled() всегда будут возвращать true , если этот метод возвратил true.

Определено в:
cancel в интерфейсе Future<V>
Параметры:
mayInterruptIfRunning - true если поток, выполняющий эту задачу, должен быть прерван; в противном случае текущие задачи разрешаются завершить
Возвращает:
false если задачу невозможно отменить, обычно потому, что она уже завершилась нормально; 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>
См. также:
Thread.run()

runAndReset

protected boolean runAndReset()

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

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

© 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.

Spec-Zone.ru

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