Интерфейс CompletionService<V>
- Type Parameters:
V- тип значений, которые производят и потребляют задачи этой службы
- Все известные реализующие классы:
ExecutorCompletionService
public interface CompletionService<V>
submit задачи для выполнения. Потребители take завершенные задачи и обрабатывают их результаты в порядке их завершения. Служба CompletionService может, например, использоваться для управления асинхронным вводом-выводом, в котором задачи, выполняющие чтение, отправляются в одной части программы или системы, а затем обрабатываются в другой части программы при завершении чтения, возможно, в другом порядке, чем они были запрошены.
Обычно служба CompletionService полагается на отдельный Executor для фактического выполнения задач, в этом случае служба CompletionService только управляет внутренним очереди завершения. Класс ExecutorCompletionService предоставляет реализацию этого подхода.
Влияние согласованности памяти: Действия в потоке до отправки задачи в CompletionService предшествуют действиям, выполняемым этой задачей, которые, в свою очередь, предшествуют действиям после успешного возвращения из соответствующей take().
- Since:
- 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)
- Parameters:
-
task- отправляемая задача - Returns:
- Future, представляющий ожидаемое завершение задачи
- Throws:
-
RejectedExecutionException- если задачу нельзя запланировать на выполнение -
NullPointerException- если задача равна null
submit
Future<V> submit(Runnable task, V result)
- Parameters:
-
task- отправляемая задача -
result- результат, возвращаемый при успешном завершении - Returns:
- Future, представляющий ожидаемое завершение задачи, метод
get()которой вернёт заданное значение результата при завершении - Throws:
-
RejectedExecutionException- если задачу нельзя запланировать на выполнение -
NullPointerException- если задача равна null
take
Future<V> take() throws InterruptedException
- Returns:
- Future, представляющий следующую завершенную задачу
- Throws:
-
InterruptedException- если прервано ожидание
poll
Future<V> poll()
null, если таковых нет.- Returns:
- Future, представляющий следующую завершенную задачу, или
null, если таковых нет
poll
Future<V> poll(long timeout, TimeUnit unit) throws InterruptedException
- Parameters:
-
timeout- время ожидания до отказа, в единицахunit -
unit-TimeUnit, определяющая, как интерпретировать параметрtimeout - Returns:
- Future, представляющий следующую завершенную задачу, или
null, если указанное время ожидания истекло до того, как такая задача появится - Throws:
-
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/CompletionService.html