多线程之Thread类常见方法及线程的状态

news2024/12/23 3:25:32

Thread类常见方法

创建、启动线程、终止线程、线程等待、获取线程实例、线程休眠

1.关于如何创建线程,在专栏的上一篇文章已经谈到了有5中创建线程的方式。

2.启动线程(t.start):调用 start 方法, 才在操作系统的底层创建出一个线程。

11d6739bfa7947c1bfc6b1a5a44a622c.png

 

3.终止线程

停止线程的方式目前常见的有两种方法:

1. 通过共享的标记来进行沟通(需要给标志位上加 volatile 关键字)

2. 调用 interrupt()方法来通知

方法

说明

public void interrupt()

中断对象关联的线程,如果线程正在阻塞,则以异常方式通知,否则设置标志位

public static boolean interrupted()

判断当前线程的中断标志位是否设置,调用后清除标志位

public boolean isInterrupted() 

判断对象关联的线程的标志位是否设置,调用后不清除标志位

thread 收到通知的方式有两种:

1. 如果线程因为调用 wait/join/sleep 等方法而阻塞挂起,则以 InterruptedException 异常的形式通知,清除中断标志。当出现 InterruptedException 的时候, 要不要结束线程取决于 catch 中代码的写法,可以选择忽略这个异常, 也可以结束线程。

2.当线程没有阻塞时,那么这个时候只是内部的一个中断标志被设置,thread 可以通过

Thread.interrupted() 判断当前线程的中断标志被设置,清除中断标志。

Thread.currentThread().isInterrupted() 判断指定线程的中断标志被设置,不清除中断标志。

4.线程等待(join)

方法

说明

public void join()

等待线程结束 (死等)

public void join(long millis)

等待线程结束,最多等 millis 毫秒

 5.获取当前线程实例

public static Thread currentThread();(返回当前线程对象的引用)
public class ThreadDemo { 
   public static void main(String[] args) { 
       Thread thread = Thread.currentThread(); 
       System.out.println(thread.getName()); 
  } 
} 

6.线程休眠

public static void sleep(long millis);(休眠当前线程 millis 毫秒)
public class ThreadDemo { 
   public static void main(String[] args) throws InterruptedException { 
       Thread.sleep(3 * 1000); 
      } 
}

线程的状态

1.NEW创建了Thread对象,但是还没调用start(内核里还没创建对应PCB)

2.TERMINATED表示内核中的pcb已经执行完毕了,但是Thread对象还在

3.RUNNABLE可运行的(正在运行或者就绪)

4.阻塞(WAITING/TIMED_WAITING/BLOCKED),表示线程pcb正在阻塞队列中

d6821e4bb3624f418453bfa8964daef2.png

 

 

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

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

相关文章

ArcGIS基础实验操作100例--实验39编辑公共边与顶点

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验39 编辑公共边与顶点 目录 一、实验背景 二、实验数据 三、实验步骤 (1&…

《操作系统-真象还原》14. 文件系统

文章目录文件系统概念inode目录项与目录通过文件名查找文件的流程超级块与文件系统布局文件控制块 —— FCB创建文件系统创建相关结构创建文件系统挂载分区文件描述符文件描述符和文件表文件描述符文件表文件描述符与 inode 关联关系文件描述符的实现文件操作相关的基础函数ino…

单例模式

单例模式 1. 单例模式介绍 单例模式可以说是整个设计中最简单的模式之一,而且这种方式即使在没有看设计模式相关资料也会常用在编码开发中。 因为在编程开发中经常会遇到这样一种场景,那就是需要保证一个类只有一个实例哪怕多线程同时访问,…

C#语言实例源码系列-实现IC卡的读写

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

机器学习:通俗理解马尔科夫随机场(MRF)及其应用(附例题)

目录0 写在前面1 无向概率图2 马尔科夫随机场3 马尔科夫独立性4 例题分析0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型:决策树、支持…

Git使用,在github中创建仓库

一.本地生成密钥: ssh-keygen //生成密钥 cat id_rsa.pub # 查看公钥 查看公钥,并将公钥添加到github的服务器上 二.创建文件,并且将文件上传到GitHub 设置全局用户信息: git config --global user.name dwerrwgit config…

LabVIEW NI数字万用表与开关握手扫描速率

LabVIEW NI数字万用表与开关握手扫描速率 在决定需要哪些设备来满足系统要求时,对扫描速率数据进行基准测试非常有用。数字万用表(DMM)和开关系统也是如此,因为扫描速率取决于数字万用表、开关和它们之间的触发器的速度。本文包含…

高并发系统设计 -- 抢红包设计

抢红包的业务分析 可以明显的看到打开了红包不一定可以抢到。这样做的好处是: 符合现实生活逻辑,有仪式感防止误领,发现不对劲可以马上退出流程拆的长一些,平摊高并发下的压力 预拆包:我在发红包的时候,就…

ansible的静态清单配置文件

清单文件 定义主机清单文件 清单中定义ansible将要管理的一批主机,这些主机也可以分配到组中,以进行集中管理。组中也可以包含子组,一台主机也可以是多个组中的成员。清单还可以设置应用到它所定义的主机和组的变量。 编写主机清单文件 主机…

归置归置,我的 2022

J3code杂文(程序人生 # 年终总结) 记得 2021 年我没有进行年终总结,也就没有发出过相关的内容出来。总结原因就是一个,躺平了,自毕业换工作之后,就一直在适应工作环境与生活环境中默默的度过了 2021 年。 …

你真的懂树吗?二叉树、AVL平衡二叉树、伸展树、B-树和B+树原理和实现代码详解...

树(Tree)是一种相当灵活的数据结构(上一节已经详细讲解了基本的数据结构:线性表、栈和队列),你可能接触过二叉树,但是树的使用并不限于此,从简单的使用二叉树进行数据排序&#xff0…

(深度学习快速入门)第三章第一节:多层感知器简介

文章目录一:引入二:定义三:反向传播算法四:构建多层感知器完成波士顿房价预测一:引入 前文所讲到的波士顿房价预测案例中,涉及到的仅仅是一个非常简单的神经网络,它只含有输入层和输出层 但观…

vue3 antd项目实战——Form表单的重置与清空【resetFields重置表单未生效(手写重置函数)】

vue3 antd项目实战——resetFields重置表单无效【手写重置函数重置表单数据】关于form表单的文章合集场景复现原因分析解决方案(手写清空函数)关于form表单的文章合集 文章内容文章链接Form表单提交和校验https://blog.csdn.net/XSL_HR/article/details/128495087?spm1001.20…

面向对象定义一个hero类

问题定义一个hero类,属性有power,name,分别代表体力值和英雄的名字,体力值默认为100;方法有:1.行走的方法如果体力值为0,则输出不能行走,此英雌已死亡的信息;2.吃的方法&…

双非二本、已获HCIA认证的大二学生与C站相遇的2022

目录 前言 2022年1月、2月——迷茫 2022年3月~6月——调整规划 ​2022年7月——在CSDN发布第一篇博客 2022年8月——步入正轨,获得2022谷歌开发者大会入场名额 2022年9月~10月——开学季,收获季 2022年11月——第一次接触项目并去公司学习实践&…

01通信/协议一些简要概念

通信的目的 将一个设备的数据传送到另一个设备,扩展硬件系统。 通信协议 制定通信的规则,通信双方按照协议规则进行数据收发。 每一种通讯协议都有硬件与软件上的要求。 常见的协议 USART TX、RX 全双工 异步 单端 点对点 I2C SCL、SDA 半双…

百度大规模知识图谱构建及技术应用实践

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2022年11月份热门报告盘点罗振宇2023年跨年演讲PPT原稿2023年,如何科学制定年度规划?《底层逻辑》高清配图‍基于深度学习的个性化推荐系统实时化改造与…

【Node.js实战】一文带你开发博客项目之登录(对接完毕,cookie、session、redis各司其职)

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…

【蓝桥杯选拔赛真题54】Scratch小猫钓鱼 少儿编程scratch图形化编程 蓝桥杯选拔赛真题讲解

目录 scratch小猫钓鱼 一、题目要求 编程实现 二、案例分析 1、角色分析

河道船只识别系统 yolov5

河道船只识别系统通过Python基于YOLOv5深度学习框架模型技术对画面中船只进行监测,如识别到有船只违规行为,立即抓拍告警同步回传给平台。YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度…