线程的状态转换图

线程的几种状态

  • 新建状态(New):
    用new语句创建的线程处于新建状态,此时它和其他Java对象一样,仅仅在堆区中被分配了内存。
  • 就绪状态(Runnable):
    当一个线程对象创建后,其他线程调用它的start()方法,该线程就进入就绪状态,Java虚拟机会为它创建方法调用栈和程序计数器。处于这个状态的线程位于可运行池中,等待获得CPU的使用权。
  • 运行状态(Running):
    处于这个状态的线程占用CPU,执行程序代码。只有处于就绪状态的线程才有机会转到运行状态。
  • 阻塞状态(Blocked):
    阻塞状态是指线程因为某些原因放弃CPU,暂时停止运行。当线程处于阻塞状态时,Java虚拟机不会给线程分配CPU。直到线程重新进入就绪状态,它才有机会转到运行状态。

    • 阻塞状态可分为以下3种:

      • 位于对象等待池中的阻塞状态(Blocked in object’s wait pool):
        当线程处于运行状态时,如果执行了某个对象的wait()方法,Java虚拟机就会把线程放到这个对象的等待池中,这涉及到“线程通信”的内容。
      • 位于对象锁池中的阻塞状态(Blocked in object’s lock pool):
        当线程处于运行状态时,试图获得某个对象的同步锁时,如果该对象的同步锁已经被其他线程占用,Java虚拟机就会把这个线程放到这个对象的锁池中,这涉及到“线程同步”的内容。
      • 其他阻塞状态(Otherwise Blocked):
        当前线程执行了sleep()方法,或者调用了其他线程的join()方法,或者发出了I/O请求时,就会进入这个状态。
  • 死亡状态(Dead):
    当线程退出run()方法时,就进入死亡状态,该线程结束生命周期。

线程状态转换图还可参考此博客Java线程状态分析/线程状态转换图

线程状态转换图及各部分介绍相关推荐

  1. 线程状态转换图及其5种状态切换

    线程的状态切换图: 线程变化的5状态转换: 新建状态(New):新创建了一个线程对象. 就绪状态(Runable)/可运行状态:线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位 ...

  2. java 线程 状态 图_Java线程中的生命周期和状态控制图文详解

    这篇文章主要介绍了Java线程的生命周期和状态控制,需要的朋友可以参考下 一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于 ...

  3. 线程打印状态_Java线程状态的转换

    根据上面关于线程状态的介绍我们可以得到下面的线程状态转换图: BLOCKED与RUNNABLE状态的转换 我们在上面说到:处于BLOCKED状态的线程是因为在等待锁的释放.假如这里有两个线程a和b, ...

  4. 【图解】透彻Java线程状态转换

    大家好,我是阿星,好久不见,欢迎来到Java并发编程系列番外篇线程状态转换,内容通俗易懂,请放心食用. 线程状态 先来个开场四连问 Java线程状态有几个? Java线程状态是如何转换? Java线程 ...

  5. Java中的线程状态

    参考:https://my.oschina.net/goldenshaw?tab=newest&catalogId=3277710 1 线程状态 Java中的线程一共有6种状态. 在某个时刻, ...

  6. Java杂谈来一发(九)线程状态

    记线程状态转换图(图片来自<Java并发编程的艺术>):

  7. C#通过接口与线程通信(捕获线程状态)介绍

    摘要:本文介绍C#通过接口与线程通信(捕获线程状态),并提供简单的示例代码供参考. 提示:本文所提到的线程状态变化,并不是指线程启动.暂停.停止,而是说线程内部状态的迁移.随着软件技术不断发展,用户需 ...

  8. auto.js停止所有线程_Java多线程编程基础知识 概念介绍,以及线程状态

    一.进程 进程是操作系统结构的基础:是一次程序的执行:是一个程序及其数据在处理机上顺序执行时所发生的活动.操作系统中,几乎所有运行中的任务对应一条进程(Process).一个程序进入内存运行,即变成一 ...

  9. java多线程学习一、线程介绍、线程创建的3种方式、lambda创建方式、线程状态、线程示例:12306买票和银行取钱

    文章目录 前言 一.线程简介 1.概述 2.进程.线程 区别 在这里插入图片描述 3. 核心概念 二. 线程创建 1.概述 2. 第一种方式继承Thread 1) 继承Thread 2) 示例:下载图 ...

最新文章

  1. statpot:使用mongo+bootstrap+highcharts做统计报表
  2. 设计模式在工作中的实践
  3. 深入理解 MySQL ——锁、事务与并发控制
  4. iptables 学习笔记 二 参数指令
  5. RTP采样 p-Time Linux平台毫秒级别的延迟方法【原创】
  6. [转]数据安全之SQL注入资料整理
  7. ext2文件系统了解
  8. 开启打印服务Print Spooler
  9. 1.2 DICOM成像协议剖析
  10. 隧道场景人员车辆定位系统-帮助隧道施工实现智能化管理
  11. 软件人员kpi制定模板_员工绩效考核制度模板(餐厅绩效考核方案制定)
  12. Cisco思科常用指令
  13. nc工具测试tcp/udp协议
  14. FTP内网穿透 报错 200 227 451 注意事项
  15. 如何使用K8S实现自动化部署
  16. 昼夜系统-游戏中的时间
  17. Android 蓝牙强度Rssi
  18. 华芯通关闭,华为等国产服务器芯片企业再受打击
  19. key组合按键,长短按键,连续按键 识别方案
  20. 10060 mysql_MySQL错误:Can't connect to MySQL server (10060) 解决方案

热门文章

  1. python cdr_Python 常用模块简析
  2. pythoncv2模块详细介绍_python中cv2模块的安装方法
  3. 带外管理及OOB网络
  4. html fck编辑器,HTML编辑器FCKeditor使用详解
  5. JS的htmlEncode和htmlDecode
  6. kafka基础学习(六):kafka 代码示例
  7. Python+Vue计算机毕业设计贝儿婴儿用品网站9lrio(源码+程序+LW+部署)
  8. 【优化布局】基于matlab免疫算法求解充电站最优布局【含Matlab源码 2539期】
  9. GrowingIO 2017 数据驱动增长大会亮点!
  10. 决策树算法:原理与python实现案例