【JavaEE】Java 线程的几种状态

news2024/12/28 21:17:25

目录

一、线程状态的种类及含义

二、线程状态间的切换条件

(1)使用isAlive()判断线程的存活状态 

(2)关于BLOCKED、WAITING、TIMED_WAITING状态之间的转换

1.TIMED_WAITING

2.WAITING

3.BLOCKED

4.jconsole.exe的使用方式


一、线程状态的种类及含义

        线程的状态是个枚举类型Thread.State

public class ThreadState{
    public static void main(String []args){
        for(Thread.State state:Thread.State.values()){
            System.out.println(state);
        }
    }
}

1.NEW:安排了工作,还未开始行动

2.RUNNABLE:可工作的,分成正在工作中和即将开始工作。类似于进程中的就绪和运行状态。

3.BLOCKED:表示排队等待其他事情。同步阻塞,因为资源竞争而引起的阻塞。

4.WAITING:表示排队等待其他事情。等待阻塞,join(),需要其他线程唤醒。

5.TIMED_WAITING:表示排队等待其他事情。计时等待阻塞,有一定的等待时间。

6.TERMINATED:工作完成。


二、线程状态间的切换条件

(1)使用isAlive()判断线程的存活状态 

public class ThreadStateTransfer {
    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
            for (int i = 0; i <1; i++) {
            }
        }, "线程一");
        System.out.println(t.getName() + ": " + t.getState());
        t.start();
        while (t.isAlive()) {
            System.out.println(t.getName() + ": " + t.getState());
        }
        System.out.println(t.getName() + ": " + t.getState());;
    }
}

 

 (2)关于BLOCKED、WAITING、TIMED_WAITING状态之间的转换

1.TIMED_WAITING

public class ThreadStateTransfer {
    public static void main(String[] args) {
        final Object object = new Object();
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (object) {
                    while (true) {
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }, "t1");
        t1.start();
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (object) {
                    System.out.println("hehe");
                }
            }
        }, "t2");
        t2.start();
    }
}

 

代码中使用Thread.sleep(10000),此时线程t1是TIMED_WAITING状态,而t2则是BLOCKED转态。

2.WAITING

public class ThreadStateTransfer {
    public static void main(String[] args) {
        final Object object = new Object();
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
              synchronized (object) {
                    while (true) {
                        try {
                            object.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }, "t1");
        t1.start();
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                 synchronized (object) {
                    System.out.println("hehe");
                }
            }
        }, "t2");
        t2.start();
    }
}

代码中使用object.wait(),此时线程t1是WAITING状态。

总结而言:BLOCKED 表示等待获取锁, WAITING 和 TIMED_WAITING 表示等待其他线程发来通知。TIMED_WAITING 线程在等待唤醒,但设置了时限; WAITING 线程在无限等待唤醒。

3.BLOCKED

4.jconsole.exe的使用方式

 在本机下载jdk的文件中打开bin目录找到当中的jconsole.exe 文件,这是java中自带的调试,点击连接。可以查看线程t1、t2的状态。

 

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当 chatGPT 被职场 PUA ,笑麻了!

大家最近是不是被 chatGPT 刷屏了&#xff1f;简单来说&#xff0c;chatGPT 是一个智能聊天引擎。 那 chatGPT 和小爱同学、 siri 有什么区别呢&#xff1f; 如果体验过的朋友&#xff0c;能感受到区别还是很大&#xff0c;chatGPT 的智能表现过于优秀&#xff0c;远远超过了这…

【C++】STL-string模拟实现

文章目录驼峰法命名面试题&#xff1a;写一个简洁版的stringstring成员变量构造函数析构函数拷贝构造函数获取C形式的字符串 c_str赋值重载 operator简易版代码:string的改造 ->支持增删查改接口总览string成员变量构造函数交换拷贝构造赋值重载operator析构函数返回元素个数…

Python图像识别实战(四):搭建卷积神经网络进行图像二分类(附源码和实现效果)

前面我介绍了可视化的一些方法以及机器学习在预测方面的应用&#xff0c;分为分类问题&#xff08;预测值是离散型&#xff09;和回归问题&#xff08;预测值是连续型&#xff09;&#xff08;具体见之前的文章&#xff09;。 从本期开始&#xff0c;我将做一个关于图像识别的…

大疆A3飞控使用|飞控配置

大疆A3飞控使用|飞控配置大疆A3飞控介绍总体特性飞行特性外围设备保护功能SDK拓展拓展功能A3 飞控使用配置连接飞机基本设置机架安装遥控器电调动力配置感度电池控制参数调试基础感度动力带宽高级感度灵敏度控制器性能参数大疆A3飞控介绍 全新A3系列飞控系统结合安全可靠和精准…

【虹科案例】用于超高磁场的虹科 digitizerNETBOX——高采样率和完全同步采样

应用背景 国际 MegaGauss 科学实验室是东京大学固态物理研究所 (ISSP) 的一部分。实验室的目的是研究固态材料&#xff08;如半导体、磁性材料、金属、绝缘体、超导材料&#xff09;在超高磁场下的物理特性&#xff0c;这些领域还包括研究新材料并控制其阶段和功能。实验室脉冲…

百度工程师带你体验引擎中的nodejs

作者 | 糖果candy 导读 如果你是一个前端程序员&#xff0c;你不懂得像PHP、Python或Ruby等动态编程语言&#xff0c;然后你想创建自己的服务&#xff0c;那么Node.js是一个非常好的选择。 Node.js 是运行在服务端的 JavaScript&#xff0c;如果你熟悉Javascript&#xff0c;那…

【Kotlin 协程】Flow 异步流 ③ ( 冷流 | 流被收集时运行 | 流的连续性 )

文章目录一、冷流 ( 流被收集时运行 )二、流的连续性一、冷流 ( 流被收集时运行 ) Flow 异步流 的 构建器函数 flow 函数 中的 代码 , 在 调用 Flow#collect 函数 时 , 也就是在 Flow 异步流 收集元素时 , 才会 执行 flow 构建器 中的代码 ; 这种机制的异步流 称为 冷流 ; 代…

移动WEB开发之响应式布局--Bootstrap栅格系统

栅格系统简介 栅格系统英文为“grid systems”,也有人翻译为“网格系统”&#xff0c;它是指将页面布局划分为等宽的列&#xff0c;然后通过列数 的定义来模块化页面布局。 Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统&#xff0c;随着屏幕或视口&#xff08;vi…

spring-statemachine状态机梳理

目录 一、基本回顾 1、为什么要用状态机 2、什么是状态机 3、状态机可归纳为4个要素 4、对应Spring StateMachine的核心步骤 5、简单例子 添加maven依赖 定义状态枚举和事件枚举 完成状态机的配置 简单测试一下 添加Listener 监听器,当状态变更时&#xff0c;触发方…

1. SpringMVC概述与入门

1. SpringMVC简介 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架优点 使用简单&#xff0c;开发便捷&#xff08;相比于Servlet&#xff09;灵活性强 2. 入门案例 2.1 实现步骤分析 1 创建web工程&#xff08;Maven结构&#xff09; 2 设置tomcat服务器&#xff0c;加…

Qt属性系统(Qt Property System)

Qt提供了巧妙的属性系统&#xff0c;它与某些编译器支持的属性系统相似。然而&#xff0c;作为平台和编译器无关的库&#xff0c;Qt不能够依赖于那些非标准的编译器特性&#xff0c;比如__property 或者 [property]。Qt的解决方案能够被任何Qt支持的平台下的标准C编译器支持。它…

Kafka工作流程简介

消息传递模式简介: 一个消息系统负责将数据从一个应用程序传递到另外一个应用程序中&#xff0c;应用程序只关注数据&#xff0c;无需关注数据在多个应用之间是如何传递的。 分布式消息传递基于可靠的消息队列&#xff0c;在客户端应用和消息系统之间异步传递消息。 消息传递有…

MySQL面试常问问题(日志) —— 赶快收藏

目录 1.MySQL日志文件有哪些&#xff1f;分别介绍下作用&#xff1f; 2.binlog和redo log有什么区别&#xff1f; 3.一条更新语句怎么执行的了解吗&#xff1f; 4.那为什么要两阶段提交呢&#xff1f; 5.redo log怎么刷入磁盘的知道吗&#xff1f; 1.MySQL日志文件有哪些&…

Typora配合PicGo阿里云图床配置

写博客的时候&#xff0c;刚开始直接在各大平台上直接写&#xff0c;后来还是觉得不太方便&#xff0c;需要在各大平台之间来回切换。于是就改用Typora&#xff0c;但是有个问题就是图片的处理&#xff0c;只能放在本地。想要发布到各大平台&#xff0c;就需要图床。本文结合阿…

2022年安徽最新水利水电施工安全员模拟试题及答案

百分百题库提供水利水电施工安全员考试试题、水利水电施工安全员考试预测题、水利水电施工安全员考试真题、水利水电施工安全员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 15.围堰工程可以直接判定为生产安全重大事故隐…

【UE4 第一人称射击游戏】02-玩家健康和护甲

步骤&#xff1a; 1.在“ThirdPersonCharacter”中添加两个浮点变量“Health”和“Armor” 将默认值设为1.0&#xff0c;表示默认100% 2.新建一个控件蓝图&#xff0c;命名为“FPSHUD” 打开“FPSHUD”&#xff0c;添加两个进度条&#xff0c;分别表示当前的生命值和护甲量 调…

InnoDB架构体系

2、InnoDB架构体系 2.1、内存结构 2.1.1、buffer pool InnoDB内存缓存区&#xff0c;使用空间换时间的思想&#xff0c;给数据做了一个缓存。把热点的数据存储在内存中&#xff0c;减少IO次数&#xff0c;提高效率。 show variables like %innodb_buffer_pool%;buffer pool …

基于polar码和SCMA的多用户检测的联合检测译码matlab仿真,polar采用SCAN软译码,SCMA用MPA算法

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 构造的核心是通过信道极化&#xff08;channel polarization&#xff09;处理&#xff0c;在编码侧采用方法使各个子信道呈现出不同的可靠性&#xff0c;当码长持续增加时&#xff0c;部分信道将…

【C语言】初阶习题

目录 1.图案问题 2、时分秒转换 3、打印1-100之间所有3的倍数的数字 4、打印100~200之间的素数 5、给定两个数&#xff0c;求这两个数的最大公约数 6、在屏幕上输出9*9乘法口诀表 7、计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值&#xff0c;打印出结果 8、二分查找 …

说明DBCO-PEG-SH二苯并环辛炔-聚乙二醇-巯基科研试剂材料,DBCO-PEG-SH结构式

结构式 英文&#xff1a;DBCO-PEG-SH&#xff0c;DBCO-PEG-Thiol 中文&#xff1a;二苯并环辛炔-聚乙二醇-巯基 溶剂&#xff1a;溶于水、DMSO等常规有机溶剂 性状&#xff1a;液体/固体白色或淡黄色粉末&#xff0c;取决于分子量 用途范围&#xff1a;广泛应用于医药、生物…