线程池参数的意义

江枫思渺然 提交于 2019-12-02 18:21:45

参考链接:

https://www.cnblogs.com/jiangxiulian/p/7443983.html

1. corePoolSize: 核心线程数

缺省值为1

  • 核心线程会一直存活,即使没有任务需要执行
  • 当线程数小于核心线程数,即使有空闲线程,线程池也会优先创建新线程处理
  • 设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭

2. queueCapacity: 任务队列容量(阻塞队列)

当核心线程数达到最大时,新任务会放在队列中排队等待执行

3. maxPoolSize: 最大线程数

  • 当前线程数 >= corePoolSize, 且任务对列已满时,线程池会创建新线程来处理任务
  • 当前线程数 = maxPoolSize, 且任务对列已满时, 线程池会拒绝处理任务而抛出异常

4. keepAliveTime: 线程空闲时间

  • 当空闲时间达到keepAliveTime时,线程会退出,直到线程数量等于corePoolSize
  • 如果allowCoreThreadTimeout=true, 则线程会退出,直到线程数量等于0

5. allowCoreThreadTimeout:允许核心线程超时

缺省是false

6. rejectedExecutionHandler: 任务拒绝处理器

  • 当线程数达到maxPoolSize, 且队列已满,会拒绝新任务
  • 当线程池调用shutdown()和线程池真正shutdown之间提交的任务会被拒绝。

 

转载于:https://my.oschina.net/u/3781047/blog/1810510

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!