该部分深入学习后在进行更新

五种状态

image.png

  1. 初始状态:创建线程对象时的状态
  2. 可运行状态(就绪状态):调用start()方法后进入就绪状态,也就是准备好被cpu调度执行
  3. 运行状态:线程获取到cpu的时间片,执行run()方法的逻辑
  4. 阻塞状态: 线程被阻塞,放弃cpu的时间片,等待解除阻塞重新回到就绪状态争抢时间片
  5. 终止状态: 线程执行完成或抛出异常后的状态

    六种状态

    image.png
    Thread类中的内部枚举State
    public enum State {
    NEW,
    RUNNABLE,
    BLOCKED,
    WAITING,
    TIMED_WAITING,
    TERMINATED;
    }

  6. NEW 线程对象被创建

  7. Runnable 线程调用了start()方法后进入该状态,该状态包含了三种情况
    1. 就绪状态 :等待cpu分配时间片
    2. 运行状态:进入Runnable方法执行任务
    3. 阻塞状态:BIO 执行阻塞式io流时的状态
  8. Blocked 没获取到锁时的阻塞状态(同步锁章节会细说)
  9. WAITING 调用wait()、join()等方法后的状态
  10. TIMED_WAITING 调用 sleep(time)、wait(time)、join(time)等方法后的状态
  11. TERMINATED 线程执行完成或抛出异常后的状态

六种线程状态和方法的对应关系