Kotlin线程(3)线程状态

在线程的生命周期中,线程会有5种状态。

  • 新建状态
    新建状态(New)是通过实例化 Thread 创建线程对象,它仅仅是一个空的线程对象。

  • 就绪状态
    当主线程调用新建线程的 start() 函数后,它就进入就绪状态(Runnable)。此时的线程尚未真正开始执行线程体,它必须等待 CPU 的调度。

  • 运行状态
    CPU 调度就绪状态的线程,线程进入运行状态(Running),处于运行状态的线程独占 CPU,执行完成线程体。

  • 阻塞状态
    由于某种原因运行状态的线程会进入不可运行状态,即阻塞状态(Blocked)。Java 虚拟机系统不能执行处于阻塞状态的线程,即使 CPU 空闲,也不能执行该线程。如下几个原因会导致线程进入阻塞状态:

    • 当前线程调用 sleep 函数,进入休眠状态;
    • 被其他线程调用了 join 函数,等待其他线程结束;
    • 发出 I/O 请求,等待 I/O 操作完成期间;
    • 当前线程调用 wait 函数。

    处于阻塞状态可以重新回到就绪状态,如休眠结束、其他线程加入、I/O 操作完成 和 调用 notifynotifyAll 唤醒 wait 线程。

  • 死亡状态
    线程执行完成线程体后,就会进入死亡状态(Dead),线程进入死亡状态有可能是正常执行完成进入,也可能是由于发生异常而进入的。


    Kotlin线程(3)线程状态_第1张图片
    线程状态

你可能感兴趣的:(Kotlin线程(3)线程状态)