转载

漫画 Java 线程池的工作机制

线程池

结构图

线程池是一套围绕着核心线程、非核心线程、等待队列的任务调度框架。

默认情况,线程池主要结构如下:

漫画 Java 线程池的工作机制

corePoolSize

核心线程数

当前线程池中运行的线程数量还没有达到 corePoolSize 大小时,线程池会将任务直接提交给核心线程执行

漫画 Java 线程池的工作机制

BlockingQueue

等待队列

如果当前线程池中运行的线程数量已经达到 corePoolSize ,新提交的任务会被加入到 等待队列

漫画 Java 线程池的工作机制

直到某一个" 核心线程 "执行任务完毕,处于空闲状态,线程池会 等待队列 中取出一个新的任务执行

漫画 Java 线程池的工作机制

maximumPoolSize

最大线程数量

当线程数大于 corePoolSize  数量,并且等待队列已满,但是还没有达到最大线程数 maximumPoolSize ,则线程池会创建新的" 非核心线程 "来执行任务

漫画 Java 线程池的工作机制

R ejectedExecutionException

任务拒绝策略

如果提交的任务,无法被核心线程直接执行,又无法加入等待队列,又无法创建“非核心线程”直接执行,线程池将根据拒绝处理器定义的策略处理这个任务

漫画 Java 线程池的工作机制

往期精选

Java命令行工具之 jstat

彻底弄懂Lambda和高阶函数

不要让你的Java对象"逃逸"了!

源码分析Java虚拟机中锁膨胀的过程

大话Java对象在虚拟机中是什么样子?

Java虚拟机究竟是如何处理SoftReference的

漫画 Java 线程池的工作机制

最后说一句

原创不易,如果觉得写得不错就点个"在看"吧,或者转发更佳

也可以加我微信,加群讨论更多技术问题

漫画 Java 线程池的工作机制

或者关注公众号,查看更多文章

漫画 Java 线程池的工作机制

原文  https://mp.weixin.qq.com/s/W-DZPwFhaazO4FgD6QT-sg
正文到此结束
Loading...