java线程状态

线程一般具有五中状态:新建,就绪,运行,阻塞,死亡

新建状态(new):

在程序中创建了一个线程对象之后,线程便处于新建状态,虚拟机为其分配内存和初始化成员变量,但是处于不可运行的状态,程序不会指向线程执行体。

就绪状态(Runnable):

线程对象调用了start()方法后,便启动了线程,线程启动后由创建状态转为就绪状态,虚拟机为其分配调用栈和程序计数器,就绪状态相当于等待执行,进入线程队列排队,等待cpu执行,已经具备了执行资格
运行start()方法只是进入了就绪状态,并没有开始运行。

运行状态(Running):
就绪态的线程分配到cpu处理资源后,便进入了运行状态,自动调用线程的run()方法,run()方法定义了该线程的功能和操作

阻塞状态(blocked):

线程主动放弃自己的资源或者线程由于一些原因被阻塞,则线程由运行状态转到阻塞状态;阻塞状态在合适情况下会重新转入就绪状态
线程调用sleep()方法,阻塞IO方法,等待通知notify(),suspend()等会进入阻塞状态。

死亡状态(dead):

线程run()方法结束后或者调用了线程的stop()方法或者抛出未捕获异常,线程便进入了死亡状态


Java线程的状态类似上述几种状态,但划分有所不同

线程的六种状态仔Thread中的State枚举中定义
public enum State {

    NEW,
    RUNNABLE,
    BLOCKED,
    WAITING,
    TIMED_WAITING,
    TERMINATED;

}

NEW:表示刚创建的线程,还没开始执行,等待线程的start()方法调用时才表示线程开始执行。
RUNNABLE:表示线程正在执行。
BLOCKED:阻塞状态,线程在执行过程中遇到synchronized同步块,暂停执行,等待获得锁。
WAITING:等待状态,无时间限制的等待,
TIMED_WAITING:等待状态,有时间限制的等待,
TERMINATED:终止状态,线程执行完毕,表示结束。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值