Интерфейс CompletionService<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 |
Возвращает и удаляет Future, представляющую следующую завершенную задачу, ожидая, если необходимо, до указанного времени ожидания, если таковых еще нет. |
Future<V> |
submit |
Отправляет задачу Runnable на выполнение и возвращает Future, представляющую эту задачу. |
Future<V> |
submit |
Отправляет задачу, возвращающую значение, на выполнение и возвращает Future, представляющую ожидаемые результаты задачи. |
Future<V> |
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, 2021, 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/17/docs/api/java.base/java/util/concurrent/CompletionService.html