java线程有哪些状态?

本文详细阐述了Java线程的生命周期,包括新建、可运行、运行、阻塞和死亡五个状态,并分别解析了各状态间的转换,如wait()、同步锁、sleep()、join()等方法对线程状态的影响。理解线程状态对于优化并发程序至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 新建:新创建一个对象
  2. 可运行:线程对象创建后,其他线程(比如main线程)调用该对线打个stat()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的权限
  3. 运行:可运行状态的线程获取到CPU的时间片,执行程序代码
  4. 阻塞:阻塞状态是线程因为某种原因放弃的cpu的使用权,也让出了CPU timeslice,暂停停止运行,直至线程进入可运行的(Runable)状态,才有机会再次获得时间片,转到运行状态 阻塞又分为三种
    (1. 等待阻塞:运行的线程执行o.wait()方法,JVM会把该线程放啊在等待队列中
    (2.同步阻塞:运行线程在回去对象的同步锁时,该同步锁被其他线程占用,则JVM会把该线程放入锁池(lock pool)中
      (3.其他阻塞:运行的线程执行Thread.sleep(long ms)或者o.join() 方法,或者发出I/O请求时,JVM把该线程设置为阻塞状态,当sleep()超时或者Join()等待线程终止或者超时,或者I/O处理完毕,线程重新转入可运行状态

     5.死亡:线程Run(),main()方法之行结束,或者因为异常推出了Run()方法则该线程的生命周期结束。死亡线程不可复生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你相信光吗?

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

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

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

打赏作者

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

抵扣说明:

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

余额充值