线程池刚被创建的时候,只是向系统里申请一个用于执行流程队列和管理线程池的线程资源。在调用execute()添加一个任务时,线程池会按照以下流程执行:

1、如果正在运行的线程数少于corePoolSize(用户定义的核心线程数),线程池就会立刻创建线程并执行该线程任务;

2、如果正在运行的线程数大于corePoolSize,该任务就会被放入阻塞队列中;

3、如果阻塞队列已满且正在运行的线程数少于maximumPoolSize时,线程池会创建非核心线程立刻执行该线程任务;

4、在阻塞队列已满并且正在运行的线程数大于maximunPoolSize时,线程池将会拒绝执行该任务并且抛出拒绝异常RejectExecutionException;

5、在线程执行完毕后,该任务会从线程队列中移除,然后从队列中取下一个任务继续执行;

6、在线程处于空闲的时间超过keepAliveTime,并且正在运行的线程数大于corePoolSize, 该线程将会被认为是空闲线程并停止;所以线程任务都执行完毕后,线程池会收缩到corePoolSize大小。

最新文章

  1. Linux学习笔记(2)-开机
  2. C++/CLI——读书笔记《Visual C++/CLI从入门到精通》 第Ⅰ部分
  3. UIView不接受触摸事件的三种情况
  4. VS制作软件安装项目,版本控制和软件升级
  5. CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
  6. mac磁盘满解决方案
  7. ORA-14400: inserted partition key does not map to any partition
  8. DataNode连接错误Retrying connect to server
  9. php笔记(六)PHP类与对象之对象接口
  10. 天津工业大学CST专业培养方案
  11. [HDU1210] Eddy's 洗牌问题
  12. Docker进阶之四:centos7安装docker
  13. SSH配置
  14. 浅谈Android之Activity生命周期
  15. python基础 (序列化,os,sys,random,hashlib)
  16. Redis 学习手册
  17. [asp.net core]SignalR一个例子
  18. OneZero第一次随感
  19. 嵌入式Linux要学哪些东西?你真的造吗?
  20. jfinal头像裁剪上传服务器

热门文章

  1. .Net5下WebRequest、WebClient、HttpClient是否还存在使用争议?
  2. 【秒懂音视频开发】12_播放WAV
  3. java例题_36 移动数组中数据位置(用到数组的合并操作)
  4. Android Studio 之 RadioButton
  5. Java学习之数组的简单用法
  6. Android Studio 待看博文
  7. 使用 Elastic 技术栈构建 Kubernetes全栈监控
  8. 说一下的dubbo的工作原理?注册中心挂了可以继续通信吗?
  9. IDEA - 返回上一步,回到下一步 代码 快捷键
  10. 2. IntelliJ Idea 常用快捷键列表