java线程池算法

继上篇所讲述的java线程池数据结构,我们已经拿到了搭建java线程池的原料,接下来我们需要设计合理的算法来使线程池合理运作起来。

java线程池属于软件工程领域的范畴,软件工程领域的算法特指的是工程某些特定功能的流程,某个组件的状态机,系统序列图以及整个系统或组件的运作流程。

所以,java线程池核心算法(流程)可以拆分为线程池的状态转移流程,线程创建以及执行的周期以及任务的添加和缓存机制。

首先讲线程池的状态转移流程,参考下面的状态转移图:暴露给调用线程的有shutDown() 和 shutDownNow()方法。状态SHUTDOWN和STOP的区别是:SHOTDOWN 需要完成已经添加到线程里任务(包括正在执行的任务和缓存队列里的任务),而STOP则会立即停止所有的任务。TIDYING状态任务与线程都已经清空了,TERMINATED 标记线程池已经停止。
在这里插入图片描述
java线程池状态转移图

线程创建以及执行的周期以及任务的添加和缓存机制二者是有机结合在一起的:连接点在于任务的数量与线程数量的大小差异(线程数根据任务数做到动态扩缩)和线程创建需要一个任务做为firstTask.详情请看下图: 在这里插入图片描述
线程池任务添加流程图

下一篇将从线程池重点实现方法讲述上面的流程:

《java线程池重点实现方法》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值