永远屈服于温柔

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

线程池,时管理线程的,减少内存消耗的存在

Java给我们提供了一个线程池的类就是 Exceutor

但我们通常使用他的子类 ThreadPoolExecutor

里面有几个常用的变量我在这里说一下

 

 上面这个图是我自己做的,建议大家看一下官方的定义

下面这个图帮助大家理解线程池

 

 线程池执行任务的流程

 

 常见的几种拒绝策略   

       AbortPolicy:不执行新任务,提示线程池已满。抛出异常

      DisCardPolicy:不执行新任务,也不抛出异常

       DisCardOldSetPolicy:将消息队列中的第一个任务替换为当前新进来的任务执行

       CallerRunsPolicy:直接调用execute来执行当前任务

常见的线程池

CachedThreadPool:可缓存的线程池,该线程池中没有核心线程,非核心线程的数量无限大适用于耗时少,任务量大的情况。

SecudleThreadPool:周期性执行任务的线程池,有核心线程,但也有非核心线程,非核心线程的大小也为无限大。适用于执行周期性的任务。

SingleThreadPool:只有一条线程来执行任务,适用于有顺序的任务的应用场景。

FixedThreadPool:定长的线程池,有核心线程,没有非核心线程

posted on 2021-04-24 23:13  永远屈服于温柔  阅读(84)  评论(0)    收藏  举报