本文主要是介绍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,解决生产者消费者问题的正统方式
这篇关于ThreadPoolExecutor底层实现 小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!