线程(四)

线程(一) ~ 线程(四)章节导图

导图icon-default.png?t=N7T8https://naotu.baidu.com/file/07f437ff6bc3fa7939e171b00f133e17

线程安全

什么是线程安全?

业务中多线程同时访问一个对象或方法时我们不需要做额外的处理(像单线程编程一样)程序可以正常运行并能获取到正确的结果(不会因为多线程而出错)我们就认为上面的对象或方法是线程安全的;

线程安全问题三大类?

        1.运行结果错误

        2.活跃性问题(死锁、活锁、饥饿)

        3.对象发布和初始化时安全问题

面试题

多线程带来性能问题的原因?

        1.上下文切换;

        2.内存同步;

什么是上下文切换?

        正在运行的线程被其它线程抢占了CPU资源,原本正在运行的线程需要把当前上下文信息(CPU寄存器值,程序计数器等数据)保存到内存中以便下次再次被CPU调度到继续执行,再执行另一个线程的过程叫作上下文切换;

何时会进行上下文切换?

         1.线程执行时间超过CPU为其分配的时间片;

         2.线程执行了sleep()/wait()方法;

         3.线程IO过程引起的阻塞;

你知道有哪些线程不安全的情况?

        1.运行结果错误

        2.活跃性问题(死锁、活锁、饥饿)

        3.对象发布和初始化时安全问题

哪些情况下需额外注意线程安全?        

        1.访问共享变量或资源会有并发安全问题比如对象属性、静态变量、共享缓存;

        2.所有依赖时序的操作;(如:原本应该是先写后读,而多线程下可能是先读后写);

        3.不同数据之间存在捆绑关系(如事务:应多个操作同时成功或同时失败);

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

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

相关文章

11_12-Golang中的运算符

**Golang **中的运算符 主讲教师:(大地) 合作网站:www.itying.com** **(IT 营) 我的专栏:https://www.itying.com/category-79-b0.html 1、Golang 内置的运算符 算术运算符关系运算符逻辑运…

JS模块化规范之ES6及UMD

JS模块化规范之ES6及总结 前言ES6模块化概念基本使用ES6实现 UMD(Universal Module Definition)总结 前言 ESM在模块之间的依赖关系是高度确定的,与运行状态无关,编译工具只需要对ESM模块做静态分析,就可以从代码字面中推断出哪些模块值未曾被…

RocketMQ系统性学习-RocketMQ原理分析之Broker接收消息的处理流程

🌈🌈🌈🌈🌈🌈🌈🌈 【11来了】文章导读地址:点击查看文章导读! 🍁🍁🍁🍁🍁🍁&#x1f3…

Leetcode 53 最大子数组和

题意理解: 给定一个数列,求连续的子序列的和最大可以是多少? 子数组 是数组中的一个连续部分。 比如: nums [-2,1,-3,4,-1,2,1,-5,4] 最大子序列的和:6(4-121) 解题思路: 使用贪心的…

回溯法之计算操作符

问题: 设计一个算法在 1,2,……9(顺序不变)数值之间插入或者-或者什么都不插入, 使得计算结果总是 100 的程序。 //例如 1 2 34 - 5 67 - 8 9 100。 思路: 创建一个长度为9的数组arr,其中存放数字1到9。创建一个长度为9的字…

【git学习笔记 01】打标签

文章目录 一、声明二、对标签的基本认知什么是标签?为什么要打标签?如何生成类似github中readme的图标 三、标签相关命令四、示例操作 一、声明 本帖持续更新中如有纰漏,望批评指正!参考视频链接,非常感谢原作者&…

HTMLCSS旋转的圣诞树源码附注释

css代码附注释 *{/* 初始化 */margin: 0;padding: 0; } body{align-content: center;align-items: center;background-color: #9f0000;

5 分钟内搭建一个免费问答机器人:Milvus + LangChain

搭建一个好用、便宜又准确的问答机器人需要多长时间? 答案是 5 分钟。只需借助开源的 RAG 技术栈、LangChain 以及好用的向量数据库 Milvus。必须要强调的是,该问答机器人的成本很低,因为我们在召回、评估和开发迭代的过程中不需要调用大语言…

ARFoundation系列讲解 - 93 绘制圆

案例中使用的软件版本 Unity2023.1.20.f1c1ARFoundtaion 5.1.0Apple ARKit XR Plugin 5.1.0 Google ARCore XR Plugin 5.1.0技术分析 我们可以实时检测用户手指触摸的屏幕位置,从触摸位置投射一条射线(Raycast),再射线命中的目标位置创建一个点,放置一个圆,手指拖动来设置…

Backtrader 文档学习-Data Feeds(下)

Backtrader 文档学习-Data Feeds(下) 1. Data Resampling 当数据仅在单个时间范围内可用,需要在不同的时间范围内进行分析时,就需要进行一些重采样。 “重采样”实际上应该称为“上采样”,因为它是从一个源时间区间到…

C++的泛型编程—模板

目录 一.什么是泛型编程? ​编辑 ​编辑 二.函数模板 函数模板的实例化 当不同类型形参传参时的处理 使用多个模板参数 三.模板参数的匹配原则 四.类模板 1.定义对象时要显式实例化 2.类模板不支持声明与定义分离 3.非类型模板参数 4.模板的特化 函数模板…

MySQL的安装及如何连接到Navicat和IntelliJ IDEA

MySQL的安装及如何连接到Navicat和IntelliJ IDEA 文章目录 MySQL的安装及如何连接到Navicat和IntelliJ IDEA1 MySQL安装1.1 下载1.2 安装(解压)1.3 配置1.3.1 添加环境变量1.3.2 新建配置文件1.3.3 初始化MySQL1.3.4 注册MySQL服务1.3.5 启动MySQL服务1.3.6 修改默认账户密码 1…

Windows中安装nvm进行Node版本控制

1.nvm介绍 nvm英文全程也叫node.js version management,是一个node.js的版本管理工具。nvm和npm都是node.js版本管理工具,但是为了解决node各种不同之间版本存在不兼容的问题,因此可以通过nvm安装和切换不同版本的node。 2.nvm下载 可在点…

6个免费设计资源站,设计师们赶紧收藏!

本期给大家分享5个免费的设计资源站,设计师必备的设计设计神奇,绝对能帮助你在工作中事半功倍,赶紧收藏吧~ 1、菜鸟图库 https://www.sucai999.com/?vNTYwNDUx 菜鸟图库是我推荐过很多次的网站,主要是站内素材多,像…

PHPStorm一站式配置

phpstorm安装好之后,先别急着编码。工欲善其事,必先利其器,配置好下面这些之后让编码事半功倍。 主题 Appearance & Behavior -> Appearance -> Theme 选中 [Light with Light Header] 亮色较为护眼 关闭更新 Appearance & …

C#学习笔记 - C#基础知识 - C#从入门到放弃 - C# 方法

C# 入门基础知识 - 方法 第8节 方法8.1 C# 函数/方法简介8.2 方法的声明及调用8.2.1 参数列表方法的声明及调用8.2.2 参数数组方法的声明及调用8.2.3、引用参数与值参数 8.3 静态方法和实例方法8.3.1 静态、实例方法的区别8.2.3 静态、实例方法的声明及其调用 8.4 虚方法8.4.1 …

Linux学习(3)——基本命令-文件

1、cat:查看文件内容--上下合并文件 注意:cat只能查看普通的文本文件 如果文件内容过多会显示不全 选项效果-n显示行号包括空行-b跳过空白行编号;注意,在一行打了空格不算空白行,enter键直接跳过这一行才算-s将所有连续…

【JAVA】CyclicBarrier源码解析以及示例

文章目录 前言CyclicBarrier源码解析以及示例主要成员变量核心方法 应用场景任务分解与合并应用示例 并行计算应用示例 游戏开发应用示例输出结果 数据加载应用示例 并发工具的协同应用示例 CyclicBarrier和CountDownLatch的区别循环性:计数器的变化:用途…

[c]用指针进行四个数排序

#include<stdio.h> void swap(int*p1,int*p2)//定义函数&#xff0c;实现两个数值交换 {int temp;temp*p1;*p1*p2;*p2temp; } void psort( int *pa, int *pb,int *pc,int *pd) {int i1;for(i1;i<3;i)//对四个数排序&#xff0c;至少3次循环&#xff0c;交换过后是升序…

论文笔记 | ICLR 2023 ReAct:通过整合推理和行动来增强语言模型

文章目录 一、前言二、主要内容三、总结🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 ICLR 2023 | Accept: notable-top-5%:《ReAct: Synergizing Reasoning and Acting in Language Models》 一句话总结:ReAct 方法在问答任务中通过提示大语言模型生成与任…