文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java多线程之线程状态

2024-12-02 11:53

关注

关于Java线程的状态,有的人可能会说有4种状态,有的会说有5种,6种,总之各种各样的说法可能都有。造成这种情况的原因是:有很多的书上常常把操作系统进程状态,线程状态与Java线程状态混在一起谈。下面这个图相信大家在讲多线程的文章中都见到过(或类似):

这些其实是操作系统上的书上常会提到的5种 进程(process) 状态:new,ready,running,waiting,terminated。

其实最简单的就是直接查看Java源码,就知道Java中线程到底定义了几种状态。如果我们查看JDK源码的话,就会发现Java语言中定义的线程状态是不同于操作系统的,我们可以在Thread.State源码中的注释中看到,它说得很清楚:

These states are virtual machine states which do not reflect any operating system thread states。

也就是说Java语言中定义的这些状态都是指虚拟机状态,它不反映任何操作系统的线程状态。

以RUNNABLE状态为例,源码中的注释是这样说的:executing in the Java virtual machine(正在Java虚拟机中执行)。至于它是否真正在执行,不是我们要操心的事。

一个 Java 线程它所对应的操作系统内核线程中的状态可能有Running又有Ready,但在Java虚拟机层面则统一映射成了RUNNABLE 状态。如果Java中觉得没必要去区分这些状态,我们也就没有必要去纠结这些了。

还有一些情况下,操作系统也许只有一种状态,但在Java中又作了细分,给出了三种不同的状态,例如会把Java状态中的 BLOCKED,WAITING,TIMED_WAITING 三种状态都笼统地称为 blocked 或者 waiting 。

又或者把TIMED_WAITING 状态当作不存在,在很多文章中从来不提有这个状态,显然,这种做法又是受到传统进程状态划分的影响。尽管它与WAITING很像,我们最好按着 Thread.State 中的定义来,不要自己随意发挥。

所以这就明白了,那些很多声称Java线程只有4种或5种状态的文章,常常都是自作主张地合并了这些状态,把这些东西混为一谈是非常容易引发混乱的,这个我们将会在后面具体谈到。

综上所述,为避免出现混乱,厘清概念所处的层次是非常重要的。

下面我们就以 JDK1.8 源码中为标准,分别给大家介绍一下Java线程的这6种状态,下面我们先来看一下 JDK 中对于线程状态的定义都有哪些。

线程的6种状态

在 Thread 类的一个内部枚举类 Thread.State 中明确地定义这6种状态,如下图所示:

状态含义:

在程序运行的某个给定时间点上,一个Java线程只能处于这6种状态中的一种。

通过上面的介绍,相信大家就可以很清晰的、明确的知道Java线程状态到底有几种状态,又分别都有哪些状态了,虽然可能对各个线程状态的详细含义还不是特别了解,别着急,后面我们会逐一介绍,请大家多多关注后续文章。

参考:

 

关于Java的线程状态

 

来源:我是开发者FTD内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯