之前笔记有记录java线程池的拒绝策略,回顾一下线程池的处理任务的优先级:

先考虑corePoolSize、任务队列(缓冲队列)workQueue、最大线程maximumPoolSize,如果三者都满了,使用handler处理被拒绝的任务。

即:

如果运行的线程少于corePoolSize,则 Executor 始终首选添加新的线程,而不进行排队。(如果当前运行的线程小于corePoolSize,则任务根本不会存入queue中,而是直接运行)

如果运行的线程大于等于 corePoolSize,则 Executor始终首选将请求加入队列,而不添加新的线程。

如果无法将请求加入队列,则创建新的线程,除非创建此线程超出 maximumPoolSize,在这种情况下,任务将被拒绝。

BlockingQueue <Runnable> workQueue 这个缓冲队列有三种类型:

1、直接提交SynchronousQueue

2、无界队列LinkedBlockingQueue

3、有界队列ArrayBlockingQueue

四种常用线程池:

1、newCachedThreadPool:内部使用SynchronousQueue

2、newFixedThreadPool:内部使用

3、newScheduledThreadPool:内部使用DelayedWorkQueue

4、newSingleThreadExecutor

(一般不要直接用包装好的,根据具体问题自行使用参数创建)

***问题:如果没达到核心线程的时候如果再有请求的时候为什么还会创建新线程?就算有空闲线程?

vimi说:“代码逻辑”

if(没满){新建
}
else{if(还有空闲){这时候才插入到空闲}  else{再去考虑加入队列以及拒绝策略}
}

  

参考:https://zhuanlan.zhihu.com/p/32867181

转载于:https://www.cnblogs.com/LinsenLi/p/9771195.html

java四种线程池类型以及可选择的阻塞队列相关推荐

  1. [转]new Thread的弊端及Java四种线程池的使用

    介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下new ...

  2. Java 四种线程池

    原文 介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下n ...

  3. Java四种线程池使用

    Java 四种线程池的使用 https://juejin.im/post/59df0c1af265da432f301c8d 1,线程池的作用  线程池作用就是限制系统中执行线程的数量.  根据系统的环 ...

  4. Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor...

    1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? Java new Thread(new Runnable() {@Override public void run ...

  5. Java 四种线程池的用法分析

    1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() {@Overridepublic void run() {// ...

  6. Java四种线程池类

    Java中四种具有不同功能常见的线程池.他们都是直接或者间接配置 ThreadPoolExecutor来实现他们各自的功能.这四种线程池分别是newFixedThreadPool, newCached ...

  7. Java四种线程池及new Thread的弊端

    new Thread 的弊端 执行异步任务只是如下 new Thread() 吗? new Thread(new Runnable() {@Overridepublic void run() {// ...

  8. new thread java_谈谈new Thread的弊端及Java四种线程池的使用

    1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...

  9. Java四种线程池的使用 1

    Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. newFi ...

最新文章

  1. PNAS-2018-根系分泌物香豆素调控微生物群落结构并促进植物健康
  2. 自学Python十二 战斗吧Scrapy!
  3. Activity跳转的数据交换问题---Activity学习笔记(二)
  4. java编程有什么独特之处?
  5. BZOJ 3282 Link Cut Tree (LCT)
  6. string类用法Java_Java中String类的用法
  7. greensock下载_GreenSock动画平台初学者指南
  8. 答复达内同学 2007-08-11
  9. 二元函数可微与切平面存在的关系
  10. 马里兰帕克分校计算机科学,马里兰大学帕克分校管理信息系统(MIS)专业详解...
  11. 去除面部黑色素小妙招_去除脸部黑色素7个小方法
  12. python csv writer_python 处理 csv 文件
  13. 考研英语 - word-list-17
  14. 中层领导力:西点军校和哈佛大学共同讲授的领导力教程读书摘要
  15. ctfshow 密码挑战(上)
  16. 三菱FX5U系列程序 伺服轴自动运行计数回原点程序,工位单步运行程序,轴JOG,回原点,绝对定位,相对定位,力矩控制
  17. 工业无线客户端服务器,基于4G工业路由器光伏发电无线远程监控解决方案
  18. Django工程中,pycharm运行manage.py,提示8000端口占用问题error:That port is already in use
  19. rz command
  20. 数据结构之堆(Heap)及其用途

热门文章

  1. mycat配置访问oracle_MySQL:如何使用MyCAT实现分库分表?
  2. 自动添加html结束标志,XHTML标签都有一个结束标记
  3. typecast java_Java中的类型转换
  4. 安卓市场和安智市场_安卓市场小米市场ASO详解
  5. 快速排除故障命令除了ping还有tracert
  6. java jdbc in list_javaweb_JDBC
  7. Fluid 进入 CNCF Sandbox,加速大数据和 AI 应用拥抱云原生
  8. K8s 学习者绝对不能错过的最全知识图谱(内含 58个知识点链接)
  9. python编程基础题库_大学moocPython编程基础题库及答案
  10. java编写简单计算器_编写java程序简单计算器