zoukankan      html  css  js  c++  java
  • 线程的生命周期

    当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。 在线程的生命周期中,它要经过

    新建(New):使用new关键字创建了一个线程之后,该线程就处于新建状态

    就绪(Runnable):当线程对象调用了start()方法之后,该线程处于就绪状态

    运行(Running):如果处于就绪状态的线程获得了CPU,开始执行run()方法的线程执行体,则该线程处于运行状态

    阻塞 (Blocked):

      等待阻塞(o.wait->等待队列):运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue) 中

      同步阻塞(lock -> 锁池):运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线 程放入锁池(lock pool)中

      其他阻塞(sleep/ join):运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时, JVM会把该线程置为阻塞状态.

    死亡(Dead):

      正常结束:run()或call()方法执行完成,线程正常结束。 

      异常结束:线程抛出一个未捕获的Exception或Error。 

      调用stop:直接调用该线程的stop()方法来结束该线程—该方法通常容易导致死锁

    5种状态。尤其是当线程启动以后,它不可能一直"霸占"着CPU独自 运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换 

     

  • 相关阅读:
    自己的一个ALV隐藏列例子
    BAPI FOR MD61,MD62,MD63
    ALV 实现多表格 ( 多表格的ALV List
    MESSEG 类型
    Linux 启动tomcat服务器2
    oracle 笔记记录
    昨天、今天、明天
    Linux操作系统下MySQL数据库的使用方法(345)
    PHP安装问题
    另样文字 借你来欣赏
  • 原文地址:https://www.cnblogs.com/2328322824chx/p/13610487.html
Copyright © 2011-2022 走看看