线程池学习(六)线程池状态转化

线程池状态定义

// runState is stored in the high-order bits
// 线程池创建之后的初始状态,这种状态下可以执行任务
    private static final int RUNNING    = -1 << COUNT_BITS;
// 线程池不再接收新的任务,但是会将队列中的任务执行完 
    private static final int SHUTDOWN   =  0 << COUNT_BITS;
// 线程池不再接收新的任务,也不会处理队列中的任务,并且会将执行中的任务中断 
    private static final int STOP       =  1 << COUNT_BITS;
// 这种状态表明所有任务都处理完成或者终止,准备执行terminated()钩子方法     
    private static final int TIDYING    =  2 << COUNT_BITS;
// 执行完terminated()钩子方法之后的状态   
    private static final int TERMINATED =  3 << COUNT_BITS;

几种关闭线程池的方法

  1. shutdown()方法

等待当前工作队列中的剩余任务全部执行完成之后,才会执行关闭。调用后、状态转为SHUTDOWN

  1. shutdownNow()方法

立即关闭线程池的方法,此方法会打断正在执行的工作线程
清空当前工作队列中的剩余任务,返回的是尚未执行的任务

  1. awaitTermination()方法

等待线程池完成关闭,在设置的时间timeout内如果线程池完成关闭,返回true, 否则返回fals

关闭线程池的一般步骤
在这里插入图片描述
几种状态的转换

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值