Spec-Zone.ru › OpenJDK 24

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

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

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

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

Since:
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, представляющий ожидаемые результаты задачи. После завершения эта задача может быть взята или обработана с помощью функции poll.
Parameters:
task - отправляемая задача
Returns:
Future, представляющий ожидаемое завершение задачи
Throws:
RejectedExecutionException - если задачу нельзя запланировать на выполнение
NullPointerException - если задача равна null

submit

Future<V> submit(Runnable task, V result)
Отправляет задачу Runnable на выполнение и возвращает Future, представляющий эту задачу. После завершения эта задача может быть взята или обработана с помощью функции poll.
Parameters:
task - отправляемая задача
result - результат, возвращаемый при успешном завершении
Returns:
Future, представляющий ожидаемое завершение задачи, метод get() которой вернёт заданное значение результата при завершении
Throws:
RejectedExecutionException - если задачу нельзя запланировать на выполнение
NullPointerException - если задача равна null

take

Future<V> take() throws InterruptedException
Получает и удаляет Future, представляющий следующую завершенную задачу, ожидая, если таковых еще нет.
Returns:
Future, представляющий следующую завершенную задачу
Throws:
InterruptedException - если прервано ожидание

poll

Future<V> poll()
Получает и удаляет Future, представляющий следующую завершенную задачу, или null, если таковых нет.
Returns:
Future, представляющий следующую завершенную задачу, или null, если таковых нет

poll

Future<V> poll(long timeout, TimeUnit unit) throws InterruptedException
Получает и удаляет Future, представляющий следующую завершенную задачу, ожидая, если необходимо, до указанного времени ожидания, если таковых еще нет.
Parameters:
timeout - время ожидания до отказа, в единицах unit
unit - TimeUnit, определяющая, как интерпретировать параметр timeout
Returns:
Future, представляющий следующую завершенную задачу, или null, если указанное время ожидания истекло до того, как такая задача появится
Throws:
InterruptedException - если прервано ожидание

Сообщить об ошибке или предложить улучшение
Для получения дополнительной справки по API и документации для разработчиков см. Документацию Java SE, которая содержит более подробные описания, ориентированные на разработчика, с концептуальными обзорами, определениями терминов, решениями проблем и примерами рабочего кода. Другие версии.
Java является торговой маркой или зарегистрированной торговой маркой Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 США.
Все права защищены. Использование подчиняется лицензионным условиям и политике перераспределения документации.
ПРОЕКТ 24-ea+36-Debian-1

© 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/CompletionService.html

Spec-Zone.ru

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