多线程问题

什么是线程

线程是cpu调度和执行的单位,一个程序的运行伴随着的是一个进程的执行,而一个进程是由一个或多个线程来完成的,通过cpu调度资源在很短时间切换主线程和子线程并行,交替执行来做到看似多个线程同时进行的状态,这种现象也叫做多线程,在多线程中有时候也会存在多个线程同时访问一个资源,所以在这里就又引出了线程的并发问题,如果并发控制没有做好,会导致多线程之间内存交互,最终导致底层数据不一致的问题。

线程的生命周期

我认为周期就是从开始到结束,那线程的周期的开始就是从创建线程,到执行start()线程进入资源排队等待执行,到执行run()方法到运行状态,如果有堵塞那就让出cpu资源就重新排队等待cpu分配资源,没有堵塞继续执行,直到线程结束死亡到这个状态一个线程的生命周期也就结束了

线程的优先级

每个线程都有优先级,线程的优先级用整数数字表示,范围从1到10,一个线程如果没有专门的给他设置优先级的话默认是5。线程的优先级一是用于标记线程的重要性,二是理论上来说设置不同的新城等级在cpu分配资源的时候的概率是不同的,等级越高概率越大,但是既然是概率问题那实际上真的在实际应用中优先级低的线程执行顺序不一定在优先级高的线程之后,有可能是在其之前,所以具体最终线程执行的顺序还是要看实际cpu是怎样分配资源的。

// 设置线程优先级
public final void setPriority(int priority)

Thread 常用的方法

非私有方法

start() //启动线程setName(String name) //设置线程名称setPriority(int priority) //设置线程优先级setDaemon(boolean on) //设置线程是主线程还是join(long millisec) //守护线程或用户线程。sleep(long millisec) //设置线程休眠时间join(long millisec) //等待线程终止的时长

私有方法

yield() //暂停当前正在执行的线程对象,并执行其他线程。sleep(long millisec) //让当前正在执行的线程休眠(暂停执行)holdsLock(Object x) //当且仅当当前线程在指定的对象上保持监视器锁时,才返回 true。dumpStack() //将当前线程的堆栈跟踪打印至标准错误流。

终止进程

中断进程

守护线程

用户线程

线程的几个主要概念

线程同步

线程间通信

线程死锁

线程控制:挂起、停止和恢复

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

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

相关文章

java入门-告别C进入java世界

目标 java体系 java开发环境 helloworld java语法 java体系 java开发环境 安装JDK JDK: Java Developement Kit 配置jdk 为什么需要配置 操作系统找不到此程序 操作系统PATH PATH C:\Users\49354>echo %PATH% C:\Program Files (x86)\VMware\VMware Works…

windows信息收集和提权

目录 手动收集 工具收集 windows本地内核提权 本地提权 根据windows去找需要的exp进行利用 提权后结合mimikatz使用 msf提权 简单提权 生成后门 上线 BypassUAC绕过UAC提权 msf带的bypassuac模块可以尝试提权 Bypassuac提权命令操作 提权成功 ​local_exploi…

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)

pip安装python库时报错问题解决 报错:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841) 解决: pip --trusted-host pypi.python.org install -r packagename(包名)

C# IOC容器、依赖注入和控制反转

控制反转(Inversion of Control, IoC) 定义:控制反转是一种设计原则,它反转了传统编程中的控制流程。在传统的编程模式中,组件之间的依赖关系是由组件自身在内部创建和维护的。而在控制反转模式中,这种依赖…

linux编写驱动程序常用API

在Linux设备驱动开发中,有许多常用的API,这些API提供了与内核和其他驱动程序交互的功能。以下是一些常见的Linux设备驱动开发API: 1. 设备注册与注销 register_chrdev_region(): 注册一个字符设备号范围。alloc_chrdev_region(): 动态分配一…

特斯拉的人形机器人最新展示,穿戴遥操作示教的机器人学习!

在机器人领域,特斯拉的人形机器人一直备受关注。2021 年,在「特斯拉 AI 日」上,马斯克发布了特斯拉的通用机器人计划,并用图片展示了人形机器人 Tesla Bot 的大致形态。但当时的 Tesla Bot 只是个概念,动作展示部分是由…

VSCode升级后不能打开在MacOS系统上

VSCode 在MacOS无法打开 版本 VSCode version: 1.91.0 (x64) 错误信息: MacBook-Pro ~ % /Users/mac/Downloads/FirefoxDownloads/Visual\ Studio\ Code.app/Contents/MacOS/Electron ; exit; [0710/142747.971951:ERROR:crash_report_database_mac.mm(753)] op…

西安明德理工学院师生莅临泰迪智能科技开展参观见习活动

为进一步深化校企合作,落实高校应用型人才培养。7月8日,西安明德理工学院与广东泰迪智能科技股份有限公司联合开展学生企业见习活动。西安明德理工学院金融产业学院副院长刘敏、金融学专业负责人张莉萍、金融学专业教师曹艳飞、赵浚妤、泰迪智能科技董事…

TCP中的2MSL详解

TCP中的2MSL时间 2MSL(Maximum Segment Lifetime)时间是TCP协议中一个非常重要的参数。MSL是一个TCP段在网络中可以存活的最长时间,2MSL就是两倍的这个时间。在TCP连接终止时,连接的两个端点需要等待2MSL时间,以确保所…

CinemachineBrain的属性简介

CinemachineBrain的属性简介 CinemachineBrain是Unity Cinemachine的核心组件,它和Camera组件挂载在一起,监控场景中所有的virtual camera。CinemachineBrain在inspector中暴露的属性如下: Live Camera和Live Blend分别表示当前active的virtu…

python-26-零基础自学python-如何创建文件、读取数据、处理多个文件及程序异常处理等

学习内容:《python编程:从入门到实践》第二版第10章 知识点: 程序异常如何处理?try-except-else 多个文件处理 创建文件:在文件中储存数据 练习内容: 练习10-8:猫和狗 创建文件cats.txt和…

YOLOv10改进 | Conv篇 | CVPR2024最新DynamicConv替换下采样(解决低FLOPs陷阱)

一、本文介绍 本文给大家带来的改进机制是CVPR2024的最新改进机制DynamicConv其是CVPR2024的最新改进机制,这个论文中介绍了一个名为ParameterNet的新型设计原则,它旨在在大规模视觉预训练模型中增加参数数量,同时尽量不增加浮点运算&#x…

训练营第八天 | 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字

344.反转字符串 做题思路 双指针库函数的实现 代码细节 class Solution { public:// 库函数swap的实现void swapString(char& a, char& b) {char tmp a;a b;b tmp;}void reverseString(vector<char>& s) {// 双指针库函数int i, j;for(i 0, j s.siz…

PyTorch复现PointNet——模型训练+可视化测试显示

因为项目涉及到3D点云项目&#xff0c;故学习下PointNet这个用来处理点云的神经网络 论文的话&#xff0c;大致都看了下&#xff0c;网络结构有了一定的了解&#xff0c;本博文主要为了下载调试PointNet网络源码&#xff0c;训练和测试调通而已。 我是在Anaconda下创建一个新的…

Harbor企业docker私服安装及SSL安全访问配置

基础环境 ubuntu server18 域名配置 sudo vi /etc/hosts www.node23.com 192.168.43.23 docker安装 一键安装 curl -sSL https://get.daocloud.io/docker | sh 配置docker vi /etc/docker/daemon.json { "registry-mirrors": ["https://squpqgby.mirr…

掌握SQLCMD魔术:在SQL Server中以SQLCMD模式执行脚本的全面指南

掌握SQLCMD魔术&#xff1a;在SQL Server中以SQLCMD模式执行脚本的全面指南 SQL Server提供了一个强大的命令行工具&#xff0c;名为SQLCMD&#xff0c;它允许用户执行包含变量替换和条件逻辑的脚本。这种模式特别适用于自动化数据库维护任务、批量处理数据和部署数据库更改。…

Python——使用Seaborn钻石数据可视化分析(1)

目录 🧾 1、数据集(部分数据) ✏️ 2、导入数据集与必要模块 1️⃣ 导入数据 📍 通过info函数查看所有列数据的类型信息 2️⃣ 导入Seaborn工具包 📍 set_context 设置图形绘制时的上下文参数 📍 set_style 设置绘图风格 📍 set_palette 设置图标全局颜色…

CentOS 设置手动同步指定NTP时钟服务器

1. 文件上传至服务器 2.进入文件路径 3.查看文件名称 4.安装rpm包 注意执行顺序 1&#xff0c;3&#xff0c;2 5.启动ntp并设置开机自启 6.配置ntp配置文件 修改为时间服务器ip&#xff08;同时要删除或注释掉其他三个server开头的外网的配置&#xff0c;防止因为外网不通导致…

C++基础学习笔记

1.命名空间(namespace) 1.什么是命名空间&命名空间的作用 1.在C/C中&#xff0c;变量、函数、类都是大量存在的&#xff0c;这些变量等的名称将都存在于全局作用域中&#xff0c;就会导致很多的命名冲突等。使用命名空间的目的就是对标识符的名称进行本地化&#xff0c;以…

自动驾驶革命:商汤科技突破性大模型UniAD震撼登场

自动驾驶革命&#xff1a;商汤科技突破性大模型UniAD震撼登场&#xff01; 在人工智能的浪潮中&#xff0c;自动驾驶技术一直是科技巨头们竞相追逐的圣杯。而今&#xff0c;商汤科技联合上海人工智能实验室与武汉大学&#xff0c;以一篇名为"Planning-oriented Autonomou…