线程的五段旅程:线程的生命周期轻松搞懂!

线程就像一个小人物,从出生到死亡要经历几个状态:新建就绪运行阻塞终止。了解线程的生命周期就像了解它的“旅程”,帮助我们更好地控制线程!


1. 新建(New)

当我们用new创建一个线程对象后,线程就进入了新建状态。它已经有了“身份”,但还没有开始“工作”。

Thread thread = new Thread();

此时,线程还只是“站在门口”,等待被启动。


2. 就绪(Runnable)

一旦调用start()方法,线程进入就绪状态。它已经准备好要被CPU调用了,但可能需要等一会儿,因为CPU要安排时间片给它。

thread.start();

这时线程就像“在跑道上准备起跑”的运动员,等待着“枪响”。


3. 运行(Running)

当CPU选择了线程并给它分配了时间片,线程进入运行状态。它开始在run()方法里执行代码,真正开始工作!

线程在运行状态下,会完成自己的任务,除非被迫停止(比如突然遇到异常),否则它会把该干的事情干完。


4. 阻塞(Blocked)

线程在运行中,有时会碰到“红灯”,暂时停下来。这就是阻塞状态。线程可能因为以下原因进入阻塞状态:

  • 等待IO:比如读取文件时,可能需要等待硬盘响应;
  • 等待资源:比如锁没释放,要等前一个线程释放资源;
  • SleepWait:线程主动“休息”一会儿。
try {
    Thread.sleep(1000); // 线程休息1秒
} catch (InterruptedException e) {
    e.printStackTrace();
}

一旦条件满足,线程可以重新“回到赛道”,进入就绪状态。


5. 终止(Terminated)

当线程的run()方法执行完,或因异常退出,线程就进入了终止状态。它完成了任务,不再参与CPU调度,生命周期也随之结束。

终止后的线程就像完成任务的工人,安静地退场了。


总结:线程的五段旅程一目了然!
  • 新建:创建对象,准备上场;
  • 就绪:等待CPU调度,“蹲跑”状态;
  • 运行:CPU分配时间片,开始执行;
  • 阻塞:临时遇阻,等条件满足再继续;
  • 终止:任务完成,生命周期结束。

理解这些状态,有助于我们更好地管理和优化多线程程序,掌控每个线程的生命周期!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值