Java线程状态转换

新建状态New:用new()语句创建的线程对象处于新建状态。

就绪状态Runnable:调用start(),该线程进入就绪状态。

运行状态Running:获得CPU,就绪状态就转为运行状态。

阻塞状态Blocked:放弃CPU,运行状态就转为阻塞状态。阻塞状态分三类:

        1、处于对象等待池的阻塞状态Blocked in object’s wait pool:运行状态的线程调用wait()方法,就转到该状态。

        2、处于对象锁池的阻塞状态Blocked in object’s lock pool:运行状态试图获得某同步锁时,当该同步锁已被占用,就进入该状态。

        3、处于其他阻塞状态Otherwise Blocked:运行状态的线程调用sleep(),或 join()方法,或发出I/O请求,就转到该状态。

死亡状态Dead:执行完run()方法,就转为阻塞状态。


常用方法:

sleep()  放弃CPU,给其他所有优先级线程的运行机会,释放锁,之后转向阻塞状态

yield()  放弃CPU,给其他有相同优先级线程的运行机会,释放锁,之后转向就绪状态

join()  当前线程转向阻塞状态,等被 join 进来的线程运行结束后才能恢复运行。

wait()  该线程释放锁,进入Blocked in object’s wait pool状态。

notify()  将该线程从Blocked in object’s wait pool 转入 Blocked in object’s lock pool 。

interrupt()  中断阻塞,使 wait()、sleep() 抛出InterruptedException 。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值