最近阿里发布的 Java开发手册中强制线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险
Executors利用工厂模式向我们提供了4种线程池实现方式,但是并不推荐使用,原因是使用Executors创建线程池不会传入这个参数而使用默认值所以我们常常忽略这一参数,而且默认使用的参数会导致资源浪费,不可取。
现在介绍一下线程池体系
|-Java.util.concurrent.Executor 负责线程的使用与调度的根接口
|-ExecutorService:Executor的子接口,线程池的主要接口
|-AbstractExecutorService:实现了ExecutorService接口,基本实现了ExecutorService其中声明的所有方法,另有添加其他方法
|-ThreadPoolExecutor:继承了AbstractExecutorService,主要的常用实现类
|-ScheduledExecutorService:继承了ExecutorService,负责线程调度的接口
|-ScheduledThreadPoolExecutor:继承了ThreadPoolExecutor同时实现了ScheduledExecutorService
转载部分(方便理解ThreadPoolExecutor):
前言
最近看阿里的 Java开发手册,上面有线程池的一个建议&