zoukankan      html  css  js  c++  java
  • 关于Java 线程的运行状态

    首先需要说明的是,所指状态为JVM线程状态,而非操作系统线程状态。同一时间,一个线程只会存在于一种状态。

    线程状态,enum State:

    1、NEW

    已创建,未运行。

    2、RUNNABLE

    线程于JVM中运行中。

    3、BLOCKED

    阻塞等待 monitor lock 以进入或重新进入 synchronized 同步块或方法,由Object.wait 触发。

    4、WAITING

    触发方法: Object.wait、join()、 LockSupport.park

    等待另外的线程执行完特定的任务。

    例如:
    线程执行Object.wait,等待另一线程执行完,并通过执行Object.notify 或者 Object.notifyAll来唤醒以继续执行;

    线程执行Thread.join,等待特定线程执行完毕。

    5、TIMED_WAITING

    时限等待。

    触发方法:Thread.sleep、Object.wait(timeout)、Thread.join(timeout)、LockSupport.parkNanos、LockSupport.parkUntil。

    6、TERMINATED

    已执行完任务的线程状态。

    附注:

    1、线程 Thread.getState 方法获取当前线程状态。此方法是涉及用来监控系统状态,而不是用于同步控制。

    2、Unsafe.park方法挂起线程。

    3、Thread.join 方法内部通过循环调用Object.wait方法来实现等待。

    4、BLOCKED 状态强调是为了进入同步逻辑而等待。

  • 相关阅读:
    手机APP远程空气质量监测应用
    SPI
    2017-10-14
    常量声明
    ios- nil NULL 和 NSNull
    Xcode搭建真机调试环境 图文实例
    ios notification
    集合对象总结
    集合对象(NSSet,NSMutableSet,NSIndexSet)
    词典对象(NSDictionary和NSMutableDictionary)
  • 原文地址:https://www.cnblogs.com/niejunlei/p/12731788.html
Copyright © 2011-2022 走看看