Java线程的状态学习

Java中线程的状态

Java线程状态共有6种,它就在Thread类中公共枚举类State中,并且同一时刻,线程只处于一个具体状态.这只是虚拟机状态,不映射任何系统线程的状态!代码如下:

public enum State {
       
    NEW,

    RUNNABLE,

    BLOCKED,

    WAITING,

    TIMED_WAITING,

    TERMINATED;
}

状态释义:

  • NEW(新建状态)
    线程处于new完,但是还没有调用start()方法的状态;

  • RUNNABLE(可运行状态)
    针对操作系统的Running或者Ready状态,可能是在运行中,也可能是在等待系统分配可运行时间;

  • BLOCKED(阻塞状态)
    等待获取排它锁的状态,需要占有锁的线程释放锁的时候发生;

  • WAITING(等待状态)
    导致线程处于等待状态的方法有下面几个:
    1.不含超时参数的Object#wait()
    2.Thread.join()
    3.LockSupport#park()
    另外,此状态的线程需要其他线程显示的唤醒动作,否则处于无限期等待状态,不会被分配执行时间;

  • TIMED_WAITING(超时等待)
    线程处于超时等待,到期后,系统会自动唤醒线程,得到执行时间直到任务结束
    1.Thread::sleep()方法;
    2.设置了Timeout参数的Object::wait()方法;
    3.设置了Timeout参数的Thread::join()方法;4.LockSupport::parkNanos()方法;
    5.LockSupport::parkUntil()方法。

  • TERMINATED(终止状态)
    线程执行结束后,会处于终止状态直到销毁。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值