多线程的状态枚举

1、NEW
new Thread()
此时线程对象状态为NEW

2、RUNNABLE
new Thread().start()
调用start()方法状态为RUNNABLE

3、BLOCKED
synchronized代码、lock.lock()、Thread.yield()都会让线程进入阻塞状态

4、WAITING
调用wait()、join()方法

5、TIMED_WAITTING
调用wait(long time)、join(long time)、sleep(long time)方法

6、TERMINATED
线程代码执行结束、抛出异常、jvm关闭

另外记录几个带时间的方法:
sleep(long time)线程休眠一定时间,不释放锁,时间结束后继续执行;
wait(long time)线程释放锁,进行等待队列,时间结束后自动唤醒,但是要继续参与锁的竞争;
join(long time)加入一个线程并运行,时间结束后不管目标线程是否执行结束,当前线程继续运行;
注意:join方法会释放锁,因为底层调用的是wait()方法,但是释放的是目标线程的锁,而不是其他对象的锁。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值