精灵王's Blog


  • 首页

  • 文章归档

  • 所有分类

  • 关于我

  • 搜索
异步编程 技术方案设计 集合 设计模式 三亚 游玩 转载 Linux 观察者模式 事件 Spring SpringCloud 实战 实战,SpringCloud 源码分析 线程池 同步 锁 线程 线程模型 动态代理 字节码 类加载 垃圾收集器 垃圾回收算法 对象创建 虚拟机内存 内存结构 Java

Java 线程生命周期

发表于 2020-10-20 | 分类于 多线程 | 0 | 阅读次数 61

线程的状态有哪些?

源码Thread.State 说明一切

public enum State {
    // 才开始new  还没有调用start()方法
    NEW,

        // 可运行状态, 正在运行或者等待操作系统资源
    RUNNABLE,

        // 阻塞状态,在等待一个监视器锁(也就是我们常说的synchronized)
    //或者在调用了Object.wait()方法且被notify()之后也会进入BLOCKED状态
    BLOCKED,

        //等待状态,在调用了以下方法后进入此状态
    // 1. Object.wait()无超时的方法后且未被notify()前,如果被notify()了会进入BLOCKED状态
    // 2. Thread.join()无超时的方法后
    // 3. LockSupport.park()无超时的方法后
    WAITING,

    //超时等待状态,在调用了以下方法后会进入超时等待状态
    //1. Thread.sleep()方法后【本文由公从号“彤哥读源码”原创】
    //2. Object.wait(timeout)方法后且未到超时时间前,如果达到超时了或被notify()了会进入BLOCKED状态
    //3. Thread.join(timeout)方法后
    //4. LockSupport.parkNanos(nanos)方法后
    //5. LockSupport.parkUntil(deadline)方法后
    TIMED_WAITING,

        // 终止状态, 线程已经执行完毕
    TERMINATED;
}

线程状态流转图

untitled.jpg

精 灵 王 wechat
👆🏼欢迎扫码关注微信公众号👆🏼
👇🏼欢迎扫码关注微信公众号👇🏼
精 灵 王 微信支付

微信支付

  • 本文作者: 精 灵 王
  • 本文链接: https://jinglingwang.cn/archives/threadlifecycle
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 异步编程 # 技术方案设计 # 集合 # 设计模式 # 三亚 # 游玩 # 转载 # Linux # 观察者模式 # 事件 # Spring # SpringCloud # 实战 # 实战,SpringCloud # 源码分析 # 线程池 # 同步 # 锁 # 线程 # 线程模型 # 动态代理 # 字节码 # 类加载 # 垃圾收集器 # 垃圾回收算法 # 对象创建 # 虚拟机内存 # 内存结构 # Java
Java 对象内存分配与回收策略
Java 线程池生命周期
  • 文章目录
  • 站点概览
精 灵 王

精 灵 王

青春岁月,以此为伴

48 日志
10 分类
29 标签
RSS
E-mail
Creative Commons
Links
  • 添加友链请联系邮箱
© 2021 精 灵 王
渝ICP备2020013371号
0%