• Java中线程的生命周期


    Java中线程的生命周期

    1 介绍

    本篇文章我们讨论下Java中的一个非常核心的概念:线程的生命周期。在Java编程语言中,多线程编程非常重要。线程从创建到销毁是有生命周期的,在线程的生命周期中,线程会经历多种状态(state)。

    2 线程状态说明以及状态流转图

    java.lang.Thread类中有一个静态的枚举类:State,用来表示线程各种可能的状态:

    public enum State {
            /**
             * NEW状态表示线程新创建,仍不能开始运行。
             */
            NEW,
    
            /**
             * RUNNABLE表示线程可运行(runnable or ready to run),有可能正在运行,或者正在资源ready,比如CPU调度。
             */
            RUNNABLE,
    
            /**
             * BLOCKED表示线程正在等待监视器锁(monitor lock),获取到监视器锁后可以进入同步代码块或者同步方法(synchronized block/method),当然可能是首次等待,也可能是调用Object.wait()等待之后再被唤醒(Object.notify()或者Object.notifyAll())后,因为唤醒后一般不能直接进入Runnable状态,需要重写争抢监视器锁,这时仍然是BLOCKED状态。
             */
            BLOCKED,
    
            /**
             * WAITING状态表示当前线程正在等待其他线程的一些动作(无超时时间的等待),包括如下三个场景:
             * Object.wait()调用之后等待其他线程调用Object.notify()或者Object.notifyAll()
             * Thread.join()调用之后等待指定的线程终止(进入TERMINATED状态)
             * LockSupport.park()调用之后等待等待其他线程调用LockSupport.unpark(thread)
             */
            WAITING,
    
            /**
             * TIMED_WAITING状态表示当前线程在限定时间内等待其他线程的一些动作,包括如下几个场景:
             * Thread.sleep
             * Object.wait指定等待时间
             * Thread.join指定等待时间
             * LockSupport.parkNanos
             * LockSupport.parkUntil
             */
            TIMED_WAITING,
    
            /**
             * TERMINATED表示终止状态,线程已经执行完成。
             */
            TERMINATED;
        }
    复制代码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    线程的可能状态流转图(状态机)如下所示:

  • 相关阅读:
    java性能优化实战:谈一谈服务性能衡量指标有哪些?
    自动化测试文档
    log4j配置
    Python3用OpenCV4连接图像
    Mysql面试必知的知识点-干货分享
    jquery获取url参数
    欧盟地区 iOS DMA 更新后,Brave浏览器安装量激增
    云端3d虚拟现实展制作
    Nginx入门+实战
    轻取软考45分之软考信息系统项目管理师范围管理​章节学习笔记
  • 原文地址:https://blog.csdn.net/Huangjiazhen711/article/details/127746565