Spec-Zone.ru › OpenJDK 8

Интерфейс CompletionService<V>

Все известные реализующие классы:
ExecutorCompletionService

public interface CompletionService<V>

Сервис, который отвязывает создание новых асинхронных задач от потребления результатов завершенных задач. Производители submit задачи для выполнения. Потребители take завершенные задачи и обрабатывают их результаты в порядке их завершения. Сервис CompletionService может, например, использоваться для управления асинхронным вводом-выводом, в котором задачи, выполняющие чтение, отправляются в одной части программы или системы, а затем обрабатываются в другой части программы, когда чтение завершается, возможно, в другом порядке, чем они были запрошены.

Обычно сервис CompletionService полагается на отдельный Executor для фактического выполнения задач, в этом случае сервис CompletionService только управляет внутренней очередью завершения. Класс ExecutorCompletionService предоставляет реализацию этого подхода.

Эффекты согласованности памяти: Действия в потоке до отправки задачи в сервис CompletionService предшествуют действиям, выполняемым этой задачей, которые в свою очередь предшествуют действиям, следующим за успешным возвратом из соответствующего take().

Методы

Модификатор и тип Метод и описание
Future<V> poll()

Возвращает и удаляет Future, представляющий следующую завершенную задачу, или null , если таковых нет.

Future<V> poll(long timeout, TimeUnit unit)

Возвращает и удаляет Future, представляющий следующую завершенную задачу, ожидая, если необходимо, до указанного времени ожидания, если таковых ещё нет.

Future<V> submit(Callable<V> task)

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

Future<V> submit(Runnable task, V result)

Отправляет задачу Runnable для выполнения и возвращает Future, представляющий эту задачу.

Future<V> take()

Возвращает и удаляет Future, представляющий следующую завершенную задачу, ожидая, если таковых ещё нет.

Методы

submit

Future<V> submit(Callable<V> task)

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

Параметры:
task - задача для отправки
Возвращает:
Future, представляющий ожидаемое завершение задачи
Исключения:
RejectedExecutionException - если задача не может быть запланирована для выполнения
NullPointerException - если задача равна null

submit

Future<V> submit(Runnable task,
                 V result)

Отправляет задачу Runnable для выполнения и возвращает Future, представляющий эту задачу. После завершения эта задача может быть взята или опрошена.

Параметры:
task - задача для отправки
result - результат, который нужно вернуть при успешном завершении
Возвращает:
Future, представляющий ожидаемое завершение задачи, и метод get() которого вернёт заданное значение результата после завершения
Исключения:
RejectedExecutionException - если задача не может быть запланирована для выполнения
NullPointerException - если задача равна null

take

Future<V> take()
        throws InterruptedException

Возвращает и удаляет Future, представляющий следующую завершенную задачу, ожидая, если таковых ещё нет.

Возвращает:
Future, представляющий следующую завершенную задачу
Исключения:
InterruptedException - если прервано ожидание

poll

Future<V> poll()

Возвращает и удаляет Future, представляющий следующую завершенную задачу, или null , если таковых нет.

Возвращает:
Future, представляющий следующую завершенную задачу, или null , если таковых нет

poll

Future<V> poll(long timeout,
               TimeUnit unit)
        throws InterruptedException

Возвращает и удаляет Future, представляющий следующую завершенную задачу, ожидая, если необходимо, до указанного времени ожидания, если таковых ещё нет.

Параметры:
timeout - время ожидания, прежде чем отказаться, в единицах unit
unit - TimeUnit , определяющая, как интерпретировать параметр timeout
Возвращает:
Future, представляющий следующую завершенную задачу, или null , если указанное время ожидания истекло, прежде чем такая задача появилась
Исключения:
InterruptedException - если прервано ожидание

© 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