Java线程状态的转换

在Java中,线程可以处于不同的状态,而状态之间的转换是通过调用不同的线程方法或由操作系统进行管理的。主要的线程状态有以下几种:

1、NEW(新建):

  • 当创建了一个Thread对象时,线程处于NEW状态。
  • 还未调用 start() 方法。

2、RUNNABLE(可运行):

  • 线程可以运行,也可能正在运行。
  • 线程对象调用了 start() 方法,线程进入可运行状态。

3、BLOCKED(阻塞):

  • 阻塞状态表示线程阻塞于锁。
  • 当一个线程试图访问一个被其他线程持有的锁时,它就会进入阻塞状态。

4、WAITING(等待):

  • 表示当前线程等待其他线程执行完特定操作。
  • 例如,调用 Object.wait() 方法,或者是调用 Thread.join() 方法,对应线程会从RUNNABLE状态转换为WAITING状态。

5、TIMED_WAITING(计时等待):

  • 类似于等待状态,但可以在指定的时间后自行返回。
  • 例如,调用 Thread.sleep(long millis) 或带有超时参数的 Object.wait(),,对应线程会从RUNNABLE状态转换为TIMED_WAITING状态。线程调用相同对象的 Object.notify()Object.notifyAll() 方法时对应线程就会争抢锁,争抢成功的线程变成RUNNABLE状态,争抢失败的锁变成BLOCKED状态。注意:执行sleep时锁不会释放,执行wait时会释放锁。

6、TERMINATED(终止):

  • 线程已经执行完毕。
  • 线程正常终止、抛出一个未捕获的异常而终止或者执行了 Thread.stop() 方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值