Java线程有几种状态?请分别讲述一下每种状态的含义。

共有6种状态,被定义在 Thread.State 这个枚举里面,分别是:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。


NEW —— 表示的是新建一个线程对象,还没有调用 start() 方法。
RUNNABLE —— 表示的是一个线程等待被调度或正在运行中。Java线程将 READY(就绪)和 RUNNING(运行)这两种状态统称为 RUNNABLE(可运行的)。
BLOCKED —— 表示的是一个线程阻塞在进入 synchronized 修饰的方法或代码块时的状态。
WAITING —— 表示的是一个线程需要等待其他线程做出一些特定动作(通知或中断),其作用是让出CPU,等待被显示地唤醒,被唤醒后进入 BLOCKED 状态,再重新获取锁。
TIMED_WAITING —— 和 WAITING 作用一样,但它是带有超时时间的,在一定的时间内让出CPU,时间到了自动唤醒,然后进入 BLOCKED 状态,重新获取锁。而 WAITING 是无限期等待。
TERMINATED —— 表示线程已经执行完毕,退出的线程处于此状态。


在给定的时间点,线程只能处于一种状态。这些状态是虚拟机状态,不是操作系统线程的状态。

相关推荐
©️2020 CSDN 皮肤主题: 护眼 设计师:闪电赇 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值