美文网首页
9-ExecutorCompletionService

9-ExecutorCompletionService

作者: 鹏程1995 | 来源:发表于2020-02-11 10:59 被阅读0次

概述

引入

我们之前介绍了CompletionService,它定义了一些新的接口用于按照任务提交的先后顺序来返回Future,现在我们介绍一个他的实现类,看看它是怎么实现的这个功能。

摘要

介绍了ExecutorCompletionService的新加功能的实现原理。

类介绍

类定位

此类对CompletionService进行了基本的实现,实现方法很巧妙。

注意

学习它的思路模式,在后面自己根据业务修改代码时会很方便。

源码解读

我们重点了解它实现“获得任务完成的先后顺序”的。

private class QueueingFuture extends FutureTask<Void> {
    QueueingFuture(RunnableFuture<V> task) {
        super(task, null);
        this.task = task;
    }
    protected void done() { completionQueue.add(task); }
    private final Future<V> task;
}

这实现。。。。。很鸡贼呀。向大佬学习!!!!

使用示例

核心逻辑介绍

此类在构建时使用一个线程池做入参,此类的关注点只是对RunnableFuture做了一些附加,所有的线程创建及任务执行全部委托给构造函数入参的线程池。

整个类结构清晰,很棒。

使用思路

初始化,正常调用即可,通过了解,完成排序是子任务的回调函数做的,不会占用主线程太大的开销,相比于我们之前的轮循方法,有很大进步

问题

扩展

参考文献

相关文章

  • 9-ExecutorCompletionService

    概述 引入 我们之前介绍了CompletionService,它定义了一些新的接口用于按照任务提交的先后顺序来返回...

网友评论

      本文标题:9-ExecutorCompletionService

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