Интерфейс CompletionService<V>
- Параметры типа:
V- тип значений, которые задачи этой службы создают и используют
- Все известные реализующие классы:
ExecutorCompletionService
public interface CompletionService<V>
submit задачи для выполнения. Потребители take завершённые задачи и обрабатывают их результаты в порядке завершения. Например, CompletionService можно использовать для управления асинхронным вводом-выводом: задачи чтения отправляются в одной части программы или системы, а затем обрабатываются в другой части программы после завершения чтения, возможно, в ином порядке, чем они были запрошены. Обычно CompletionService полагается на отдельный Executor, который фактически выполняет задачи. В этом случае CompletionService управляет только внутренней очередью завершённых задач. Класс ExecutorCompletionService предоставляет реализацию этого подхода.
Эффекты согласованности памяти: действия в потоке до отправки задачи в CompletionService происходят до действий, выполняемых этой задачей, которые, в свою очередь, происходят до действий после успешного возврата соответствующего вызова take().
- Начиная с версии:
- 1.5
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Future |
poll() |
Извлекает и удаляет Future, представляющий следующую завершённую задачу, или null, если таких задач нет. |
Future |
poll |
Извлекает и удаляет Future, представляющий следующую завершённую задачу, ожидая при необходимости указанное время, если таких задач пока нет. |
Future |
submit |
Отправляет задачу Runnable на выполнение и возвращает Future, представляющий эту задачу. |
Future |
submit |
Отправляет на выполнение задачу, возвращающую значение, и возвращает Future, представляющий ожидаемые результаты задачи. |
Future |
take() |
Извлекает и удаляет Future, представляющий следующую завершённую задачу, ожидая, если таких задач пока нет. |
Подробное описание методов
submit
Future<V> submit(Callable<V> task)
- Параметры:
-
task- задача для отправки - Возвращает:
- Future, представляющий ожидающее завершения задачи
- Выбрасывает:
-
RejectedExecutionException- если задачу невозможно запланировать для выполнения -
NullPointerException- если задача равна null
submit
Future<V> submit(Runnable task, V result)
- Параметры:
-
task- задача для отправки -
result- результат, возвращаемый при успешном завершении - Возвращает:
- Future, представляющий ожидающее завершения задачи, метод
get()которого после завершения вернёт указанное значение результата - Выбрасывает:
-
RejectedExecutionException- если задачу невозможно запланировать для выполнения -
NullPointerException- если задача равна null
take
Future<V> take() throws InterruptedException
- Возвращает:
- Future, представляющий следующую завершённую задачу
- Выбрасывает:
-
InterruptedException- если ожидание было прервано
poll
Future<V> poll()
null, если таких задач нет.- Возвращает:
- Future, представляющий следующую завершённую задачу, или
null, если таких задач нет
poll
Future<V> poll(long timeout, TimeUnit unit) throws InterruptedException
- Параметры:
-
timeout- время ожидания до прекращения ожидания, в единицахunit -
unit-TimeUnit, определяющий интерпретацию параметраtimeout - Возвращает:
- Future, представляющий следующую завершённую задачу, или
null, если указанное время ожидания истечёт до её появления - Выбрасывает:
-
InterruptedException- если ожидание было прервано
© 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