线程的状态及阻塞

线程的状态及阻塞之前提到了线程和进程 那就提一下线程的状态吧 线程状态通常分为五种 注意 阻塞被消除后回到就绪状态 不是运行状态温馨提示 大家可以通过 getState 来获取线程当前的状态 NEW RUNNABLE BLOCKED WAITING TIMED WAITING TERMINATED 想要了解更多的线程知识 可以看看我写的上一篇线程与进程

之前提到了线程和进程,那就提一下线程的状态吧!

线程状态通常分为五种:

  • New(新建状态):创建线程对象,该线程的生命周期开始,此时该线程已经有了相应的内存空间和其他资源
  • Runnable(就绪状态):线程对象创建后,调用该线程的start()方法就可以启动线程,当线程启动后就进入就绪状态,由于还没有分配CPU,线程将进入线程队列中排队(可运行的线程池中),等待CPU的服务,此时该线程具备了运行条件
  • Running(运行状态):当就绪状态的线程被调用并获取到了CPU资源,线程进入运行状态,此时,自动调用该线程对象的run()方法,run()定义了该线程的操作逻辑和功能,该状态直到调用其他方法或者发生阻塞才终止
  • Blocked(阻塞状态):线程因为某种原因放弃CPU的使用权,暂停或停止运行(如需要执行耗时的输入输出操作,将让出CPU的使用权,并暂时中止自己的执行,进入堵塞状态),堵塞时,线程不能进入排队队列,只有当堵塞的原因被消除后,线程才能转入就绪队列中排队等待,被CPU调度选中后会从原来停止的位置开始继续执行

注意:阻塞被消除后回到就绪状态,不是运行状态

  • Dead(死亡状态):线程调用stop()方法,destory()方法或run()方法执行结束后,线程就处于死亡状态,处于死亡状态下的线程不具有继续运行的能力

线程运行流程:

  • 通过new关键字创建线程后,进入新生
  • 调用start()方法后进入就绪状态
  • CPU调度到此线程后,此线程开始执行,就入到运行状态
  • 运行中遇到join,yield,sleep造成阻塞,进入阻塞状态,阻塞原因消除后,又回到就绪状态
  • 线程正常执行完毕或者异常中止后,进入死亡状态

造成线程阻塞的方法:

join,yield,sleep,Object的wait()方法

注意:

遇到join,yield,sleep,Object的等待wait()方法,synchronized,回到就绪状态

温馨提示:

大家可以通过getState()来获取线程当前的状态:

NEW 、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED

想要了解更多的线程知识,可以看看我写的上一篇线程与进程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208461.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午11:32
下一篇 2026年3月19日 上午11:32


相关推荐

  • mac下升级terminal/终端的subversion版本方法

    mac下升级terminal/终端的subversion版本方法

    2021年9月16日
    73
  • 图的数据结构_数据结构关于图的算法

    图的数据结构_数据结构关于图的算法图的定义和术语完全图:任意两个点都有一条边相连连通图(强连通图)连通分量(强连通分量)有向图和无向图的工程案例#include “pch.h”#include <iostream>using namespace std;//有向图 无向图 有向网 无向网enum GraphKing { DG, DN, UDG, UDN };//定义图…

    2022年8月18日
    6
  • Hibernate与MyBatis详解「建议收藏」

    Hibernate与MyBatis详解「建议收藏」Hibernate&amp;amp;nbsp;是当前最流行的O/Rmapping框架,它出身于sf.net,现在已经成为Jboss的一部分。&amp;amp;nbsp;Mybatis&amp;amp;nbsp;是另外一种优秀的O/Rmapping框架。目前属于apache的一个子项目。MyBatis&amp;amp;nbsp;参考资料官网:http://www.mybatis.org/core/zh/index.html&amp;amp;nbsp;&a

    2025年10月21日
    4
  • 听我讲完redo log、binlog原理,面试官老脸一红

    听我讲完redo log、binlog原理,面试官老脸一红MySQL 问题答得很好 收到入职通知后 却发现被 HR 坑了 有毒

    2025年7月21日
    7
  • 正交多项式曲线拟合(MATLAB代码)

    正交多项式曲线拟合(MATLAB代码)文章目录一 正交多项式曲线拟合 1 曲线不经过起点与终点 2 曲线经过起点与终点二 参考文献一 正交多项式曲线拟合 1 曲线不经过起点与终点 2 曲线经过起点与终点二 参考文献 TrajectoryPl 中章节 4 2OrthogonalP

    2026年3月19日
    2
  • 使用Xtrabackup进行MySQL备份

    使用Xtrabackup进行MySQL备份使用Xtrabackup进行MySQL备份一、安装1、简介Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点:(1)备份过程快速、可靠;(2)备份过程不会打断正在执行的事务;(3)能够基于压缩等功能节约磁盘空间和流量;(4)自动实现备份检验;(5)还原速度快;2、安装其最新版的软件可从http://www.percona.com/software/percona-x

    2022年6月16日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号