/** ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*********************//******* Written by Doug Lea with assistance from members of JCP JSR-166* Expert Group and released to the public domain, as explained at* http://creativecommons.org/publicdomain/zero/1.0/*/package java.util.concurrent;/*** A service that decouples the production of new asynchronous tasks* from the consumption of the results of completed tasks. Producers* {@code submit} tasks for execution. Consumers {@code take}* completed tasks and process their results in the order they* complete. A {@code CompletionService} can for example be used to* manage asynchronous I/O, in which tasks that perform reads are* submitted in one part of a program or system, and then acted upon* in a different part of the program when the reads complete,* possibly in a different order than they were requested.** <p>Typically, a {@code CompletionService} relies on a separate* {@link Executor} to actually execute the tasks, in which case the* {@code CompletionService} only manages an internal completion* queue. The {@link ExecutorCompletionService} class provides an* implementation of this approach.** <p>Memory consistency effects: Actions in a thread prior to* submitting a task to a {@code CompletionService}* <a href="package-summary.html#MemoryVisibility"><i>happen-before</i></a>* actions taken by that task, which in turn <i>happen-before</i>* actions following a successful return from the corresponding {@code take()}.** @since 1.5*/public interface CompletionService<V> {/*** Submits a value-returning task for execution and returns a Future* representing the pending results of the task. Upon completion,* this task may be taken or polled.** @param task the task to submit* @return a Future representing pending completion of the task* @throws RejectedExecutionException if the task cannot be* scheduled for execution* @throws NullPointerException if the task is null*/Future<V> submit(Callable<V> task);/*** Submits a Runnable task for execution and returns a Future* representing that task. Upon completion, this task may be* taken or polled.** @param task the task to submit* @param result the result to return upon successful completion* @return a Future representing pending completion of the task,* and whose {@code get()} method will return the given* result value upon completion* @throws RejectedExecutionException if the task cannot be* scheduled for execution* @throws NullPointerException if the task is null*/Future<V> submit(Runnable task, V result);/*** Retrieves and removes the Future representing the next* completed task, waiting if none are yet present.** @return the Future representing the next completed task* @throws InterruptedException if interrupted while waiting*/Future<V> take() throws InterruptedException;/*** Retrieves and removes the Future representing the next* completed task, or {@code null} if none are present.** @return the Future representing the next completed task, or* {@code null} if none are present*/Future<V> poll();/*** Retrieves and removes the Future representing the next* completed task, waiting if necessary up to the specified wait* time if none are yet present.** @param timeout how long to wait before giving up, in units of* {@code unit}* @param unit a {@code TimeUnit} determining how to interpret the* {@code timeout} parameter* @return the Future representing the next completed task or* {@code null} if the specified waiting time elapses* before one is present* @throws InterruptedException if interrupted while waiting*/Future<V> poll(long timeout, TimeUnit unit) throws InterruptedException;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。