源码阅读 - 线程池:线程池原理(一)线程池概述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lidelin10/article/details/100031178

平时我们使用线程,都应该使用线程池。为什么呢?
1、线程池易于管理
2、杜绝了线程的随意创建
3、线程调度交由线程池管理更为高效
4、线程池可伸缩,能根据当前任务数量自动调节工作线程的数量,线程调度更为高效

在这里插入图片描述
我们平时习惯使用Executors的newCachedThreadPool、newFixedThreadPool、newSingleThreadPool创建线程池,其实都是使用TheadPoolExecutor的构造函数,只是传入的参数不同而已。

学习线程池源码,暂且先提出几个问题:

1、一个execute调用经历了什么?
2、线程池是如何添加线程的?maximumPoolSize和corePoolSize如何影响线程池的大小?
3、线程池如何实现自动缩减的?
4、线程池的状态以及各个状态的限制
5、线程池shutdown是如何“停止”正在运行的线程的?
6、为什么线程池提交任务会抛出reject异常?

猜你喜欢

转载自blog.csdn.net/lidelin10/article/details/100031178