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 @ 2023-03-12 18:17  月落随山隐  阅读(48)  评论(0)    收藏  举报