Java中的线程状态

Java中线程的状态

  • New:新创建对象,还没执行start()方法
  • RUNNABLE:就绪态和运行状态。
  • BLOCKED:表示线程等到获取锁时候的状态。
  • WAITING:处于这种状态的线程不会被分配CPU执行时间,它们要等待被显式地唤醒。
  • TIMED_WAITED:与TIMED_WAITED不同的是,这个到达一定时间会被自动唤醒。
  • TERMINATED:线程已经执行完毕

线程的生命周期

  1. 线程被实例化,线程的状态即为NEW
  2. 线程调用start()方法,线程变成RUNNABLE。其中RUNNABLE分为运行态和就绪态。
    • 线程执行·yield()方法,从运行态->就绪态`。其实就是让出计算资源。
    • 系统重新分配计算资源,线程从就绪态->运行态
  3. 等待其他线程某些操作。
    • Object.wait()Thread.join()、进入WAITING状态。
    • Object.notifyObject.notifyAll()重回RUNNABLE状态。
  4. 线程进入进入指定时间的等待。
    • Thread.sleep(long)Object.wait(long)Thread.join(long)进入TIMED_WAITED
    • Object.notifyObject.notifyAll()重回RUNNABLE状态。
  5. 线程遇到同步锁
    • 线程等待进入sychronized方法、块的时候进入BLOCKED状态。
    • 线程获得锁,回到RUNNABLE
  6. 线程执行完成,变成TERMINATED状态。
posted @   月落随山隐  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示