说一下线程的生命周期?

1、典型回答

Java 线程的生命周期有以下 6 种:

  1. NEW (初始化状态)
  2. RUNNABLE (可运行/运行状态)
  3. BLOCKED (阻塞状态)
  4. WAITING (无时限等待状态)
  5. TIMED_WAITING (有时限等待状态)
  6. TERMINATED (终止状态)

注:Java 线程状态可能和操作系统的状态叫法和分类是不同的。

2、全面剖析

线程的这 6 种状态也可以在 Thread 的源码中找到,如下所示:

当然你也可以使用 java 代码,来打印所有的线程状态,如下代码所示:

以上程序的执行结果如下图所示:

Java 中线程的生命周期有 6 种:NEW (初始化状)、RUNNABLE (运行/运行状态)、BLOCKED(阻塞状态)、WAITING (无时限等待状态) 、TIMED_WAITING(有时限等待状态) 、TERMINATED(终止状态)。

3、知识扩展

线程状态的转换如下图所示:

  1. NEW (新建状态):new Thread() 时线程的状态
  2. RUNNABLE (可运行/运行状态):调用 start() 方法后的状态
  3. BLOCKED(阻塞状态):调用了 synchronized 加锁之后的状态。获得锁之后就从 BLOCKED 状态变成了RUNNABLE 状态。
  4. WAITING (无时限等待状态):调用了 wait() 方法之后会进入此状态
  5. TIMED_WAITING(有时限等待状态):调用了 sleep(long millis) 方法之后会进入此状态
  6. TERMINATED (终止状态):线程任务执行完成之后就变成此状态 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dream_ready

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

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

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

打赏作者

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

抵扣说明:

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

余额充值