Java线程池的工作流程
2024-08-28 17:17:37
线程池刚被创建的时候,只是向系统里申请一个用于执行流程队列和管理线程池的线程资源。在调用execute()添加一个任务时,线程池会按照以下流程执行:
1、如果正在运行的线程数少于corePoolSize(用户定义的核心线程数),线程池就会立刻创建线程并执行该线程任务;
2、如果正在运行的线程数大于corePoolSize,该任务就会被放入阻塞队列中;
3、如果阻塞队列已满且正在运行的线程数少于maximumPoolSize时,线程池会创建非核心线程立刻执行该线程任务;
4、在阻塞队列已满并且正在运行的线程数大于maximunPoolSize时,线程池将会拒绝执行该任务并且抛出拒绝异常RejectExecutionException;
5、在线程执行完毕后,该任务会从线程队列中移除,然后从队列中取下一个任务继续执行;
6、在线程处于空闲的时间超过keepAliveTime,并且正在运行的线程数大于corePoolSize, 该线程将会被认为是空闲线程并停止;所以线程任务都执行完毕后,线程池会收缩到corePoolSize大小。
最新文章
- Linux学习笔记(2)-开机
- C++/CLI——读书笔记《Visual C++/CLI从入门到精通》 第Ⅰ部分
- UIView不接受触摸事件的三种情况
- VS制作软件安装项目,版本控制和软件升级
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
- mac磁盘满解决方案
- ORA-14400: inserted partition key does not map to any partition
- DataNode连接错误Retrying connect to server
- php笔记(六)PHP类与对象之对象接口
- 天津工业大学CST专业培养方案
- [HDU1210] Eddy's 洗牌问题
- Docker进阶之四:centos7安装docker
- SSH配置
- 浅谈Android之Activity生命周期
- python基础 (序列化,os,sys,random,hashlib)
- Redis 学习手册
- [asp.net core]SignalR一个例子
- OneZero第一次随感
- 嵌入式Linux要学哪些东西?你真的造吗?
- jfinal头像裁剪上传服务器
热门文章
- .Net5下WebRequest、WebClient、HttpClient是否还存在使用争议?
- 【秒懂音视频开发】12_播放WAV
- java例题_36 移动数组中数据位置(用到数组的合并操作)
- Android Studio 之 RadioButton
- Java学习之数组的简单用法
- Android Studio 待看博文
- 使用 Elastic 技术栈构建 Kubernetes全栈监控
- 说一下的dubbo的工作原理?注册中心挂了可以继续通信吗?
- IDEA - 返回上一步,回到下一步 代码 快捷键
- 2. IntelliJ Idea 常用快捷键列表