• 二、线程的生命周期


    线程的生命周期有新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。如下图所示:

    1、新建状态(New):
             实现Thread类,继承Runnable接口或Callable接口

    2、就绪状态(Ready):
             调用线程的 start() 方法,不一定会立即执行,可能需要等待CPU分配时间片。
             进入就绪状态的几种方式:
                      1、调用start()方法
                      2、调用了notify()或notifyAll()或unPark()
                      3、yield方法
                      4、JVM将本身线程切换到其他线程

    3、运行状态(Runable):
             Cpu分配时间片开始执行

    4、阻塞状态(Blocked):
             进入阻塞状态的几种方式:
                      1、sleep()方法
                      2、wait()方法
                      3、join()方法
                      4、IO阻塞,read write等
                      5、线程等待synchronized隐式锁的状态
             等待状态(Waiting):
                      发生在调用以下几个方法时:
                               1、不带参数的Object.wait()
                               2、不带参数的Thread.join()
                               3、LockSupport.park()
             超时等待(Timed-Waiting):
                      与wait状态不同在于不会一直等待,而是等待指定的时间,超时则继续运行
                      发生在调用以下几个方法时:
                               1、Thread sleep(long millis)
                               2、Object.wait(long timeout)
                               3、Thread.join(long timeout)
                               4、LockSupport.parkNanos()
                      5、LockSupport.parkUntil()

    5、结束状态(End):
             当线程运行完毕,也就是run()方法执行完成或异常退出的方式,即死亡

    线程生命周期的详细图:

  • 相关阅读:
    [ html canvas save restore ] canvas绘图 save restore 属性理论讲解
    [ html canvas save restore ] canvas绘图 save restore 属性实例演示
    [ html canvas 绘制文本 ] canvas绘图实现绘制文本 strokeText fillText方法及textAlign textBaseline font 属性实例演示
    [ html canvas 旋转 缩放 平移 ] canvas绘图实现旋转复制实例演示
    [ html canvas 绘制曲线三种方法 ] canvas绘图 绘制曲线三种方法属性实例演示
    context.quadraticCurveTo() context.bezierCurveTo()详解
    sphinx教程 区段查询配置 命令(2)
    sphinx安装测试2
    fabric教程(1)
    NLPIR使用(1)
  • 原文地址:https://www.cnblogs.com/giswhw/p/15534155.html
Copyright © 2020-2023  润新知