Java线程池的状态

JDK1.8源码中关于状态的介绍

JDK源码中关于线程池状态的介绍

线程池有五种状态

从注释中可以看到,线程池有五种状态

  • RUNNING
    会接收新任务并且会处理队列中的任务
  • SHUTDOWN
    不会接收新任务并且会处理队列中的任务
  • STOP
    不会接收新任务并且不会处理队列中的任务,并且会中断在处理的任务(注意:一个任务能不能被中断得看任务本身)
  • TIDYING
    所有任务都终止了,线程池中也没有线程了,这样线程池的状态就会转为TIDYING,一旦达到此状态,就会调用线程池的terminated()
  • TERMINATED
    terminated()执行完之后就会转变为TERMINATED

线程池状态转换

  • RUNNING → SHUTDOWN
    手动调用shutdown()触发,或者线程池对象GC时会调用finalize()从而调用shutdown()
  • (RUNNING or SHUTDOWN) → STOP
    调用shutdownNow()触发,如果先调shutdown()紧着调shutdownNow(),就会发生SHUTDOWN → STOP
  • SHUTDOWN→ TIDYING
    队列为空并且线程池中没有线程时自动转换
  • STOP → TIDYING
    线程池中没有线程时自动转换(队列中可能还有任务)
  • TIDYING → TERMINATED
    terminated()执行完后就会自动转换
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值