java技术深入(一)——java多线程(三)——线程状态

1、 线程有6状态:New(新生),Runnable(可运行),Blocked(被阻塞),Waiting(等待),Timed waiting(计时等待),Terminated(被终止)
2、新生线程:已经new,但是尚未被start的线程。
3、可运行线程:调用start方法后,线程进入runnable状态。进入了可运行状态的线程可能正在运行也有肯能没有运行(这就是这个状态叫做"可运行"而不是"运行"的原因),这取决于操作系统给线程提供的运行时间。运行中的线程也属于可运行状态。
4、阻塞或等待线程:当线程处于阻塞或者等待状态时,它暂时不活动,不执行任何代码,消耗最少资源,直到线程调度器重新激活它。进入阻塞或者等待状态的情况:
     a、当一个线程试图获取一个内部的锁对象(而不是java.util.concurrent库中的锁),而该锁被其他线程持有,则该线程进入阻塞状态。当所有其他线程释放该锁,并且线程调度器允许本线程持有它时,该线程将变成非阻塞状态。
     b、当此线程等待另一个线程通知调度器某个条件时,它自己进入等待状态。Object.wait,或者Thread.join,或者等待java.util.concurrent库中的Lock或者Condition时就会出现这种情况。
     c、有些方法带有一个超时参数,调用这些方法将会导致线程进入计时等待状态。这一状态将持续到超时期满或者接到适当的通知。这些带有超时参数的方法有:Thread.sleep、Object.wait、Thread.join、Lock.tryLock、Condition.await的计时版。
5、java线程状态转换图

 
6、jion方法:java.lang.Thread的实例方法,void join(),void join(long millis),等待指定线程终止后进入runnable状态,后一个是等待指定的线程终止或者等待指定的毫秒后进入runnable状态。
7、获取线程状态:Thread.State getState(),返回值是 Thread.State类型的常量枚举:NEW,RUNNABLE,BLOCKED,WAITING,TIME_WAITING或者TERMINATED之一。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值