Spec-Zone.ru › OpenJDK 25

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

Параметры типа:
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 - если ожидание было прервано

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, которая содержит более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/CompletionService.html

Spec-Zone.ru

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