# Java中线程的六种状态

Java中线程的六种状态

线程的生命周期总共有以下六种状态

  • New(新创建)

  • Runnable(可运行的)

  • Blocked(阻塞的)

  • Waiting(等待)

  • Timed Waiting(计时等待)

  • Terminated(被终止)

任何线程任一时刻只会有一种状态

1.New

新建线程 new Thread() 就是New状态

2.Runnable

可运行的 调用线程start方法 有可能有两种状态 Ready 准备阶段,Running 运行阶段

3.Blocked

只有关键字synchronized 未获取到monitor锁的线程会进入到Blocked状态,

其他锁 AQS 会进入Waiting状态 获取到moitor锁会进入Runnable状态

4.Waiting

有以下情况会进入等待状态

  1. 当前线程调用无参object.wait() wait方法与synchronized锁一起使用,同样

    notify() :随机唤醒线程。

    notifyAll():后进先出唤醒线程。

    也必须在synchronized代码块里执行。

    wait被唤醒以后会进入Blocked状态(因为必须在synchronized代码里调用),获取锁会进入Runnable状态。

  2. 当前线程调用无参Thread.join()。

    join()执行结束会进入Runnable状态

  3. 当前线程调用无参LockSupport.park()。

    LockSupport.unpark() 会进入Runnable状态。

5.Timed Waiting

以下会进入计时等待

  1. Thread.sleep(long time)

  2. object.wait(long time)

  3. LockSupport.parkUtil(long time) LockSupport.parkNancos(long time)

  4. Thread.join(long time)

    状态转换与Waiting情况相同。

6.Terminated
  1. 线程运行结束,正常结束。
  2. 线程抛出异常,被终止。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值