Java线程池ThreadPoolExecutor的实现原理详解,让面试官仰望

本文将分析Java线程池ThreadPoolExecutor的实现原理,掌握了实现原理能帮助你更好的优化程序的性能,避免很多错误用法。本文的代码量较少,主要讲原理,等你把原理完全弄明白了代码随便一写一大堆。

1. 线程池的状态

首先,线程池是一个有状态的对象。状态有以下几种:

· RUNNING: 运行中。此时线程池能接受任务,并且会处理队列中的任务;

· SHUTDOWN: 关闭中。此时,线程池不接受新任务,但是会处理队列中的任务;

· STOP: 停止。此时线程池不接受新任务,也不会处理队列中的任务,还会中断worker线程。

· TIDYING: 清理中。所有任务都已终止且线程数等于0,开始调用terminated()。

· TERMINATED: 终止。terminated()执行结束。

线程池的状态变化方式如下图所示。

Java线程池ThreadPoolExecutor的实现原理详解,让面试官仰望

2. 线程池的内部组件

线程池的内部主要包含如下表所示组件。知道ThreadPoolExecutor内部包含哪些对象,基本就清楚线程池的实现原理了。注意,表中未给出largestPoolSize、completedTaskCount、keepAliveTime、corePoolSize和maximumPoolSize等参数。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值