美文网首页
CompletionService

CompletionService

作者: 得力小泡泡 | 来源:发表于2021-01-31 21:11 被阅读0次

    CompletionService是Java8的新增接口,JDK为其提供了一个实现类ExecutorCompletionService。这个类是为线程池中Task的执行结果服务的,即为Executor中Task返回Future而服务的。CompletionService的实现目标是任务先完成可优先获取到,即结果按照完成先后顺序排序。

    public class ExecutorCompletionService<V> implements CompletionService<V> {
        private final Executor executor;
        private final AbstractExecutorService aes;
        private final BlockingQueue<Future<V>> completionQueue;
       
        ...
    }
    

    可以看到ExecutorCompletionService主要是增强executor线程池的。Task包装后被塞入completionQueue,当Task结束,其Future就可以从completionQueue中获取到。也就是说,任务完后也会有一个队列收集起来,Future按照先执行完的任务从队列中获取

    image.png

    CompletionService接口源码:

    public interface CompletionService<V> {
        // 提交
        Future<V> submit(Callable<V> task);
        Future<V> submit(Runnable task, V result);
        // 获取
        Future<V> take() throws InterruptedException;
        Future<V> poll();
        Future<V> poll(long timeout, TimeUnit unit) throws InterruptedException;
    }
    

    相关文章

      网友评论

          本文标题:CompletionService

          本文链接:https://www.haomeiwen.com/subject/txfdtltx.html