Java线程状态(Thread.State)

1.Thread.State类

在Java中,Thread.State 是一个枚举类型,它定义了线程可能处于的几种状态。这些状态可以帮助开发人员更好地理解和监控线程的行为

状态说明
NEW (新建)线程被创建但尚未启动(即 start() 方法尚未被调用)。此时,线程对象已经存在,但是还没有在JVM中执行任何代码
RUNNABLE (可运行)线程正在JVM中执行,或者它可能在等待CPU资源以便执行
BLOCKED (阻塞)线程在等待一个监视器锁(通常是对象的 synchronized 块或方法)以便能够继续执行
WAITING (等待)线程在等待另一个线程执行特定的动作(注:线程在等待期间不会释放它持有的任何锁)
TIMED_WAITING (限时等待)与 WAITING 状态类似,但线程等待的时间是有限的。如果等待时间结束或收到特定的动作,线程将恢复执行
TERMINATED (终止)线程已经执行完毕或因为某种原因(如异常或中断)而终止(注:线程一旦进入 TERMINATED 状态,就不能再回到其他状态)

2.NEW (新建)

当创建一个新的Thread对象时,该线程就处于新建状态

Thread t = new Thread();

3.RUNNABLE (可运行)

可运行状态包括了“就绪”和“运行”两种状态。调用线程的start()方法,此线程进入就绪状态。当前线程sleep()方法结束,其他线程join()结束,某个线程拿到对象锁,这些线程也将进入就绪状态。当线程调度程序从可运行池中选择一个线程作为当前线程时,线程进入运行状态,此时线程占有CPU资源并在CPU上运行

4.BLOCKED (阻塞)

线程在等待获取一个锁以进入或重新进入同步代码块时,它会进入阻塞状态。当阻塞的原因消失,线程重新转入RUNNABLE (可运行)态

5.WAITING (等待)

线程进入等待状态,是因为它调用了其他线程的join()方法,或者调用了无参数的wait()方法。在这种情况下,线程会等待另一个线程的操作完成或者等待notify()/notifyAll()消息

6.TIMED_WAITING (限时等待)

线程进入定时等待状态,是因为它调用了sleep()或者带有指定时间的wait()或join()方法。在指定的时间过去之后,线程会自动返回RUNNABLE状态

7.TERMINATED (终止)

(1)当线程执行完毕,即线程执行完所有的代码后,线程会自动终止
(2)调用stop()方法(但该方法已经被废弃)
(3)调用线程的interrupt()方法,线程可以通过检查中断标志位来决定是否终止执行
(4)自定义一个中断标志位,并在外部进行修改。这个标志位需要用volatile进行修饰
(5)当线程中抛出未捕获的异常时,线程会终止执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码届艺术家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值