每天学习一点点211125--线程生命周期

线程的生命周期

线程的生命周期是线程对象的生老病死,即线程的状态。
线程的生命周期可以通过 getState() 方法获得,线程的状态是 Thread.State 枚举类型定义的。又以下几种:

  • NEW 新建状态。
    创建了线程对象,在调用 start() 启动之前的状态。
    Thread state for a thread which has not yet started.
  • RUNNABLE 可运行状态。
    是一个复合状态,包含 READY 和 RUNNING 状态。READY 状态该线程可以被线程调度器进行调度使它处于 RUNNING 状态,RUNNING 状态表示该线程正在执行。Thread.yield() 可以把线程由 RUNNING 状态转换为 READY 状态。
    Thread state for a runnable thread. A thread in the runnable state is executing in the Java virtual machine but it may be waiting for other resources from the operating system such as processor.
  • BLOCKED 阻塞状态。
    线程发起阻塞的 I/O 操作,或者申请由其他线程占用的独占资源,线程会转为 BLOCKED 阻塞状态,处于阻塞状态的线程不会占用 CPU 资源,当阻塞的 I/O 操作执行完成,或者线程获得了其申请的资源,线程可以转换为 RUNNABLE。
    Thread state for a thread blocked waiting for a monitor lock. A thread in the blocked state is waiting for a monitor lock to enter a synchronized block/method or reenter a synchronized block/method after calling {@link Object#wait() Object.wait}.
  • WAITING 等待状态。
    线程执行了 object.wait(),thread.join() 方法会把线程转换为 WAITING 等待状态,执行 object.notify() 方法,或者加入的线程执行完毕,当前线程会转换为 RUNNABLE 状态。
  • TIMED_WAITING
    与 WAITING 状态类似,都是等待状态。区别在于处于该状态的线程不会无限的等待,如果线程没有在指定的时间范围内完成期望的操作,该线程自动转换为 RUNNABLE 。
  • TERMINATED 终止状态
    线程结束处于终止状态。

猜你喜欢

转载自blog.csdn.net/qq_45352902/article/details/121550504