JAVA学习-并发.线程状态

一、Java中的线程状态可以分为以下五类:

1. 新建(New)状态:

当我们创建一个Thread对象时,它的状态是新建状态,表示该线程对象已被创建但还没有启动执行。

2. 运行(Runnable)状态:

当我们调用Thread对象的start()方法时,该线程进入运行状态。处于这个状态的线程可能正在执行,也可能正在等待CPU分配时间片。

3. 阻塞(Blocked)状态:

当一个线程被阻塞时,它进入阻塞状态。在阻塞状态中,线程不会占用CPU时间,直到一些特定的条件满足时,如等待I/O操作完成、等待获取锁等,线程才会进入就绪状态。

4. 休眠(Waiting)状态:

当一个线程被调用wait()、join()或park()等方法时,它进入休眠状态。在这个状态中,线程不占用CPU时间,直到被唤醒。

5. 终止(Terminated)状态:

当线程完成了它的任务或者因为一个异常而结束时,它进入终止状态。

二、Java提供了一些方法来操作线程状态。如下:

1. Thread.sleep(long millis)方法:

线程休眠指定的毫秒数。

2. Object.wait()方法:

线程等待,直到另一个线程调用notify()或notifyAll()方法来唤醒它。

3. Thread.join()方法:

等待指定线程结束。

4. Thread.interrupt()方法:

中断线程。

下面是一个简单的Java程序,展示了如何使用线程状态:

public class ThreadStateDemo {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(() -> {
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                System.out.println("线程被中断了!");
            }
        });
        System.out.println("创建线程,状态为:" + thread.getState());
        thread.start();
        System.out.println("启动线程,状态为:" + thread.getState());
        Thread.sleep(1000);
        System.out.println("等待1秒,状态为:" + thread.getState());
        thread.interrupt();
        System.out.println("中断线程,状态为:" + thread.getState());
        Thread.sleep(1000);
        System.out.println("等待1秒,状态为:" + thread.getState());
    }
}

        该程序创建一个线程,让它休眠5秒钟,然后中断该线程。程序输出每个时间点的线程状态。运行该程序,可以看到线程的状态随着时间的推移而变化。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年【电工(初级)】新版试题及电工(初级)免费试题

题库来源:安全生产模拟考试一点通公众号小程序 电工(初级)新版试题根据新电工(初级)考试大纲要求,安全生产模拟考试一点通将电工(初级)模拟考试试题进行汇编,组成一套电…

C++11新特性之final关键字

final修饰函数 final修饰函数只能修饰虚函数,防止父类的函数被子类重写 final修饰类 final修饰类防止类被继承

达梦数据库导入导出工具dmfldr

达梦数据库导入导出工具dmfldr 基础信息 OS版本: Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本: DM Database Server 64 V8 DB Version: 0x7000c 03134284132-20240115-215128-200811 dmfldr工具介绍 dmfldr(DM Fast Loade…

【漏洞复现】浙大恩特客户资源管理系统Ri0004_openFileByStream.jsp接口存在任意文件读取漏洞

漏洞描述 浙大恩特客户资源管理系统是一款针对企业客户资源管理的软件产品。该系统旨在帮助企业高效地管理和利用客户资源,提升销售和市场营销的效果。浙大恩特客户资源管理系统Ri0004_openFileByStream.jsp接口存在任意文件读取漏洞。该漏洞可能会对系统的完整性和安全性产生…

C语言-内存操作函数

C语言有一类内存函数,他们可以以字节为单位进行数据的拷贝、追加,甚至可以替代部分字符串函数。于是让我们来狠狠地学习它一百万遍吧~ 1.memcpy函数的使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 1.1mem…

Java的数组定义和使用

目录 1.前言 2.数组的概念 3.在Java中的创建和初始化 3.1数组的创建 3.2数组的初始化 4.关于使用 4.1数组元素的访问 4.2数组的遍历 4.3length和length()的区别 5.数组其实是引用类型数据 5.1初始JVM的内存分布 5.2基本类型变量与引用类型变量的区别 5.3关于null的认识 5.4设计…

ssm057学生公寓管理中心系统的设计与实现+jsp

学生公寓管理中心系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学生公寓管理中心系统就是在这样的大环境下诞生,其可以帮助管…

Matlab对多个输入信号进行数值排序提取特定值

1、将多个信号转为一个数组信号输出,在这里需要注意,数据类型是否统一; 2、使用Sort模块,进行排序(可设置排序方向),得到排序后的新数组以及对应的索引号; 3、设置想要的索引号&…

如何使用Postgres的JSONB数据类型进行高效查询

文章目录 解决方案1. 创建包含JSONB列的表2. 插入JSON数据3. 使用GIN索引加速查询4. 执行高效的JSONB查询 示例代码解释 PostgreSQL的JSONB数据类型提供了一种灵活的方式来存储和查询JSON格式的数据。JSONB不仅允许你在PostgreSQL数据库中存储JSON文档,而且还对这些…

文献学习-38-用于增量组织病理学分类的内存高效提示调整

​ Memory-Efficient Prompt Tuning for Incremental Histopathology Classification Authors: Yu Zhu, Kang Li, Lequan Yu, Pheng-Ann Heng Source: The Thirty-Eighth AAAI Conference on Artificial Intelligence (AAAI-24) ​​ Abstract 最近的研究在组织病理学分类方面…

杨元庆:人工智能需要更加私密化和个性化

4月18日, 2024联想创新科技大会Tech World在上海举办。联想集团董事长兼CEO杨元庆在演讲中表示“我们的愿景,就是让人工智能走下云端,真正落地,走进千家万户、千行百业”。 这意味着,我们需要让人工智能更加私密化和个…

低代码开发平台:创新工具,颠覆传统

低代码开发平台是近年来迅速崛起的一种创新型软件开发工具,以其高效、灵活的开发模式正颠覆着传统的开发方式。不再需要编写大量繁杂的代码,开发者们可以在图形化界面中以拖拽、配置的方式进行应用的搭建,大大提高开发效率和质量。本文将全面…

element-plus关于el-radio-group选择一个单选按钮,全被选中

问题 使用el-radio-group 组件&#xff0c;进行多个互斥选择时&#xff0c;点击一个选项时&#xff0c;全部选择。设置radio的默认值也无法选中 代码为官方实例 <template><el-radio-group v-model"radio"><el-radio :value"3">Option…

Games101-光线追踪(辐射度量学、渲染方程与全局光照)

Basic radiometry (辐射度量学) 光的强度假定l为10&#xff0c;但是10是什么。 Whitted-Style中间了很多不同简化&#xff0c;如能看到高光&#xff0c;表示做了布林冯着色&#xff0c;意味着一个光线打进来后会被反射到一定的区域里&#xff0c;而不是沿着完美的镜像方向&…

从三大层次学习企业架构框架TOGAF

目录 前言 掌握TOGAF的三个层次 层次1&#xff1a;怎么学&#xff1f; 层次2&#xff1a;怎么用&#xff1f; 层次3&#xff1a;怎么思&#xff1f; 结束语 前言 对于一名架构师来讲&#xff0c;如果说编程语言是知识库层次中的入门石&#xff0c;那么企业架构框架则相当…

【微信小程序从入门到精通(项目实战)】——微电影小程序

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

Modelsim自动化仿真脚本(TCL)——简单实例

目录 1. Modelsim与TCL脚本的关系 2.实验文件 2.1设计文件 2.2仿真测试文件 2.3. 脚本文件 3. 实验步骤 3.1. 创建文件夹 3.2. 指定路径 3.3. 创建工程 3.4. 运行命令 3.4. 实验效果 1. Modelsim与TCL脚本的关系 TCL&#xff08;Tool Command Language&#xff09;是…

吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.4-1.5

目录 第一门课&#xff1a;第二门课 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第一周&#xff1a;深度学习的 实践层面 (Practical aspects of Deep Learning)…

[C++][算法基础]分解质因数(试除法)

给定 n 个正整数 ai&#xff0c;将每个数分解质因数&#xff0c;并按照质因数从小到大的顺序输出每个质因数的底数和指数。 输入格式 第一行包含整数 n。 接下来 n 行&#xff0c;每行包含一个正整数 ai。 输出格式 对于每个正整数 ai&#xff0c;按照从小到大的顺序输出其…

同城O2O跑腿系统源码:外卖配送APP的技术架构与设计思路解析

今天&#xff0c;我将为大家详解同城O2O跑腿系统源码&#xff0c;剖析外卖配送APP的技术架构与设计思路。 一、用户端与商家端 用户端提供用户注册、登录、浏览菜单、下单、支付等功能&#xff0c;而商家端则负责商家入驻、菜单管理、订单处理等。这两个端的技术架构相对独立…