线程池,时管理线程的,减少内存消耗的存在
Java给我们提供了一个线程池的类就是 Exceutor
但我们通常使用他的子类 ThreadPoolExecutor
里面有几个常用的变量我在这里说一下
上面这个图是我自己做的,建议大家看一下官方的定义
下面这个图帮助大家理解线程池
线程池执行任务的流程
常见的几种拒绝策略
AbortPolicy:不执行新任务,提示线程池已满。抛出异常
DisCardPolicy:不执行新任务,也不抛出异常
DisCardOldSetPolicy:将消息队列中的第一个任务替换为当前新进来的任务执行
CallerRunsPolicy:直接调用execute来执行当前任务
常见的线程池
CachedThreadPool:可缓存的线程池,该线程池中没有核心线程,非核心线程的数量无限大适用于耗时少,任务量大的情况。
SecudleThreadPool:周期性执行任务的线程池,有核心线程,但也有非核心线程,非核心线程的大小也为无限大。适用于执行周期性的任务。
SingleThreadPool:只有一条线程来执行任务,适用于有顺序的任务的应用场景。
FixedThreadPool:定长的线程池,有核心线程,没有非核心线程
原文:https://www.cnblogs.com/luckbear/p/14698585.html