zoukankan      html  css  js  c++  java
  • Java线程的状态

    Java线程的状态

         线程对象在不同的运行时期有不同的状态,状态信息就存在于Thread中的State枚举中,如下所示:

     

    public enum State {
            /**
             * 至今尚未启动的线程处于这种状态.
             */
            NEW,
            /**
             * 正在Java虚拟机中执行的线程处于这种状态.
             */
            RUNNABLE,
            /**
             * 受阻塞并等待某个监视器锁的线程处于这种状态.
             */
            BLOCKED,
            /**
             * 无限期地等待另一个线程来执行某一特定操作的线程处于这种状态.
             */
            WAITING,
            /**
             * 等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态.
             */
            TIMED_WAITING,
            /**
             * 已退出的线程处于这种状态.
             */
            TERMINATED;
    }

     

         NEW状态表示刚刚创建的线程,这种线程还没开始执行。等到线程的start()方法调用时,才表示线程开始执行。当线程执行时,处于RUNNALE状态,表示线程所需的一切资源都已经准备好了。如果线程在执行过程中遇到了synchronized同步块,就会进入BLOCKED阻塞状态,这时线程就会暂停执行,直到获得请求的锁。WAITINGTIMED_WAITING都表示等待状态,它们的区别是WAITING会进入一个无时间限制的等待,TIMED_WAITING会进入一个有时间限制的等待。WAITING的线程是在等待一些特殊的事件。比如,通过wait()方法等待的线程在等待notify()方法,而通过join()方法等待的线程则会等待目标线程的终止。一旦等到了期望的事件,线程就会再次执行,进入RUNNABLE状态。当线程执行完毕后,则进入TERMINATED状态,表示结束。

     

         NEW状态出发后,线程不能再回到NEW状态,同理,处于TERMINATED的线程也不能再回到RUNNABLE状态。

     

         线程状态图如下所示:




     
     

  • 相关阅读:
    Markdown 常用语法总结
    appium python实例脚本1
    MAC OS环境下搭建基于Python语言的appium自动化测试环境
    python发送邮件
    webdriver常用函数总结
    webdriver元素定位
    selenium python实例脚本1
    SSH使用密钥登录并禁止密码登录
    MAC OS环境下搭建基于Python语言的Selenium2自动化测试环境
    在liunx系统安装负载生成器(Load Generator)
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152008.html
Copyright © 2011-2022 走看看