Spec-Zone.ru › OpenJDK 21

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

Type Parameters:
V - тип значений, которые производят и потребляют задачи этой службы
Все известные реализующие классы:
ExecutorCompletionService
public interface CompletionService<V>
Служба, которая отвязывает производство новых асинхронных задач от потребления результатов завершённых задач. Производители submit задачи для выполнения. Потребители take завершённые задачи и обрабатывают их результаты в порядке их завершения. Служба CompletionService может, например, использоваться для управления асинхронным вводом-выводом, в котором задачи, выполняющие чтение, отправляются в одной части программы или системы, а затем обрабатываются в другой части программы, когда чтения завершаются, возможно, в другом порядке, чем они были запрошены.

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

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

С:
1.5

Краткое описание методов

Модификатор и тип Метод Описание
Future<V> poll()
Возвращает и удаляет Future, представляющий следующую завершенную задачу, или null , если таковых нет.
Future<V> poll(long timeout, TimeUnit unit)
Возвращает и удаляет Future, представляющий следующую завершенную задачу, ожидая, если необходимо, до заданного времени ожидания, если таковых еще нет.
Future<V> submit(Runnable task, V result)
Отправляет задачу Runnable на выполнение и возвращает Future, представляющую эту задачу.
Future<V> submit(Callable<V> task)
Отправляет задачу, возвращающую значение, на выполнение и возвращает 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, 2023, 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/21/docs/api/java.base/java/util/concurrent/CompletionService.html

Spec-Zone.ru

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