java线程的基本状态以及状态之间的关系

本文深入解析线程从创建到结束的整个生命周期,包括初始、就绪、运行、阻塞和结束五个状态。详细介绍了线程如何从等待状态转为运行态,以及运行态线程如何通过yield、sleep、wait和join方法进入阻塞状态。此外,还探讨了线程的运行优先级、让步操作和阻塞状态的解除条件。

初始,就绪,运行,阻塞,结束

在这里插入图片描述

  • 线程被创建出来后处于等待状态(new Thread
  • 调用线程的.start()方法后进入就绪状态(也就是可以运行的状态
  • 线程有等待状态转为运行态是通过CPU来决定的通常没办法让一个线程强制马上运行(即使Java中有设置运行优先级的方法,就算把优先级设置很高,也只是增加了让线程先运行的概率并不能保证一定先运行
  • 在运行态的线程可以通过调用yield()方法来使得从运行态返回就绪态等待CPU再次调度(这种操作也称为线程让步
  • 在运行态的线程可以通过调用sleep/wait/join方法让线程进入阻塞状态
  • 如果是通过sleep方法进入阻塞状态的那么等设定的睡眠时间结束后线程就会自动变为就绪(Runnable)状态
  • 如果是通过wait方法进入的阻塞状态那么就需要等待在其他线程中调用notify/notifyAll方法使线程返回就绪状态
  • 如果是使用join方法进入的阻塞状态,这种方法一般是为了防止主线程(父线程)优先于子线程运行结束导致子线程没运行完就结束了当join的线程运行完毕后父线程会继续运行
  • 有运行状态转为结束状态/死亡状态(Dead)正常情况是线程完整运行结束,如果在运行中出错也会进入死亡状态
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值