• JAVA并发编程5_线程状态


    JAVA线程的可能处于一下几种状态,任意的时间点一个线程只能处于一个状态。

    1. 新建状态(New):创建后尚未启动的线程处于这种状态。

    转移时机:创建一个新线程。

    2. 就绪状态(Runnable):调用了start()方法,该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。

    转移时机:调用start()方法。

    处于Running状态的线程被CPU选择执行其他线程。

    执行Thread.yeild(),不保证。

    3. 运行状态(Running):就绪状态的线程获得的了CPU的执行权,正在执行run方法。

    转移时机:获得了CPU的执行权。

    4. 阻塞(Blocked):运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。

    转移时机:已经有其他线程正在执行同步代码段,等待同步锁。

    5. 无期限等待(Waiting):不会被分配CPU的执行事件,要等待被其他线程显式的唤醒,以下方法导致线程陷入无期限等待:

    转移时机:未设置timeout参数的Object.wait()方法

    未设置timeout参数的Thread.join()方法

    6. 期限等待(Time Waiting):也不会被分配CPU执行事件,不过无需等待其他线程显式的唤醒,在一定时间之后会由系统自动唤醒。以下方法导致线程陷入期限等待:

    转移时机:设置Timeout参数的Object.wait()方法

    设置Timeout参数的Thread.join()方法

    Thread.sleep(long)方法

    7. 结束(Terminated):线程执行完了,run方法退出。

  • 相关阅读:
    SSH整合
    JQuery
    MVC框架与增强
    通用分页(二)
    通用分页(一)
    自定义标签
    反射(一)
    Xml解析作业与Xml建模andXml建模作业
    Xml与Map之间的相互转换
    Xml解析
  • 原文地址:https://www.cnblogs.com/qhyuan1992/p/5385298.html
Copyright © 2020-2023  润新知