Executor提供的线程池

newCachedThreadPool: 缓存线程池
corePoolSize=0, maxinumPoolSize=+∞,队列长度=0 ,
因此线程数量会在corePoolSize到maxinumPoolSize之间一直灵活缓存和变动, 且不存在队列等待的情况,一来任务我就创建,用完了会释放。

newFixedThreadPool :定长线程池
corePoolSize= maxinumPoolSize=构造参数值, 队列长度=+∞。
因此不存在线程不够时扩充的情况

newScheduledThreadPool :定时器线程池
提交定时任务用的,构造参数里会带定时器的间隔和单位。 其他和FixedThreadPool相同,属于定长线程池。

newSingleThreadExecutor : 单线程池
corePoolSize=maxinumPoolSize=1, 队列长度=+∞
只会跑一个任务, 所以其他的任务都会在队列中等待,因此会严格按照FIFO执行

newWorkStealingPool(继承自ForkJoinPool ): 并行线程池
如果你的任务执行时间很长,并且里面的任务运行并行跑的,那么他会把你的线程任务再细分到其他的线程来分治。
ForkJoinPool介绍:https://blog.csdn.net/m0_37542889/article/details/92640903

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容