ThreadPoolExecutor底层实现 小结

1. FutureTask的实现

    public Future<?> submit(Runnable task) {
        if (task == null) throw new NullPointerException();
        RunnableFuture<Void> ftask = newTaskFor(task, null);
        execute(ftask);
        return ftask;
    }
首先会创建出对应的FutureTask,然后交给新的线程去运行,线程运行完会把返回值付给FutureTask的outcome属性


2. execute执行的细节见

http://blog.csdn.net/u011385186/article/details/77971831


3. ThreadPoolExecutor 的 ctl 属性

runStateOf(ctl.get()):表示当前ThreadPoolExecutor的运行状态:RUNNING,SHUTDOWN,STOP,TIDYING,TERMINATED

workerCountOf(ctl.get():表示当前运行中的worker个数


4. ThreadPoolExecutor 的 keepAliveTime & allowCoreThreadTimeOut 属性

对于core worker:allowCoreThreadTimeOut=true 并且 worker等待 blockingqueue超过 keepAliveTime 则会退出worker的循环等待(正常情况下core worker应该会无限等待blockingqueue知道有新的FutureTask过来)

对于非core worker: worker等待 blockingqueue超过 keepAliveTime 则会退出worker的循环等待


5. ThreadPoolExecutor 的 corePoolSize & maximumPoolSize & workQueue & workers属性

组成了线程池的主要逻辑

workers: 池子

corePoolSize & maximumPoolSize:条件

workQueue:blockingqueue,解决生产者消费者问题的正统方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值