JAVEE初阶 多线程基础(四)

线程安全

    • 一.线程安全存在的问题
    • 二.锁
    • 三.关于锁的理解
    • 四.关于锁操作混淆的理解
      • 4.1两个线程是否对同一对象加锁

一.线程安全存在的问题

在这里插入图片描述
在这里插入图片描述

为什么这里的count不是一百万呢?这就是线程所存在的不安全的问题,由于线程是抢占式执行,同时执行count++,操作本质是三个指令
1.load 读取内存上的值到寄存器中
2.add 寄存器上的值+1
3.save 将寄存器上的值放回到内存中

线程不安全的原因小结:
1.根本原因:线程的随机调度,抢占式执行
2.代码中多个线程,同时修改一个变量
3.多线程修改操作,本身不是"原子的".
4.内存可见性问题
5.指令重排序问题
我们可以通过加锁操作来解决线程不安全的问题

二.锁

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

t1执行lock的时候,就对t1这个线程加锁成功,而t2后执行lock的时候,由于已经加上锁,所以它会进入长时间的阻塞状态,一直阻塞到t1线程unlock之后,才能获取到锁.

三.关于锁的理解

(1) 一个线程加锁,一个线程不加锁,是不是会出现线程安全问题?

答案当然是会出现线程安全问题,因为一个加锁,一个不加锁,不会出现锁竞争,就会出现线程安全问题

(2) 两个线程对不同的对象加锁,会不会出现线程安全问题?

当然也会出现线程安全问题.锁竞争不会出现.

在这里插入图片描述
在这里插入图片描述

四.关于锁操作混淆的理解

4.1两个线程是否对同一对象加锁

在这里插入图片描述
在这里插入图片描述

类名.class意思就是类对象,它可以得知类中的属性,名字,参数,访问权限修饰符,继承自哪个类,实现了什么接口.

在这里插入图片描述
在这里插入图片描述

锁里面传参数是this 就可以等价位 在方法的前面写锁
锁里面传参数是类对象,就相当于锁加上一个静态方法

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

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

相关文章

带大家做一个,易上手的家常炒鸡蛋

想做这道菜 先准备五个鸡蛋 然后将鸡蛋打到碗里面 然后 加小半勺盐 这个看个人喜好 放多少都没问题 不要太咸就好 将鸡蛋搅拌均匀 起锅烧油 油温热了之后 放三个干辣椒进去炒 干辣椒烧黑后 捞出来 味道就留在油里了 然后 倒入鸡蛋液 翻炒 注意翻炒 不要粘锅底 或者 一面糊…

南开大学与字节跳动研究人员推出开源AI工具ChatAnything:用文本描述生成虚拟角色

南开大学与字节跳动研究人员合作推出了一项引人注目的研究,发布了一种名为ChatAnything的全新AI框架。该框架专注于通过在线方式生成基于大型语言模型(LLM)的角色的拟人化形象,从而创造具有定制视觉外观、个性和语调的人物。 简答…

深度解析 Spring Security 自定义异常失效问题:源码剖析与解决方案

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

设计模式之装饰模式(2)--有意思的想法

目录 背景概述概念角色 基本代码分析❀❀花样重难点聚合关系认贼作父和认孙做父客户端的优化及好处继承到设计模式的演变过程 总结 背景 这是我第二次写装饰模式,这一次是在上一次的基础上进一步探究装饰模式,这一次有了很多新的感受和想法,也…

BUUCTF john-in-the-middle 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 注意:得到的 flag 请包上 flag{} 提交 密文: 下载附件,解压得到john-in-the-middle.pcap文件。 解题思路: 1、双击文件,打开wireshark。 看到很多http流…

基于springboot实现的在线考试系统

一、系统架构 前端:html | js | css | jquery | bootstrap 后端:springboot | springdata-jpa 环境:jdk1.7 | mysql | maven 二、 代码及数据库 三、功能介绍 01. 登录页 02. 管理员端-课程管理 03. 管理员端-班级管理 04. 管理员端-老师管理…

1688商品详情API在跨境电子商务中的重要性

1688商品详情API在跨境电子商务中的重要性 一、引言 随着全球电子商务的迅速发展和普及,跨境电子商务已经成为国际贸易的一种重要形式。1688作为全球最大的B2B电子商务平台之一,不仅为国内商家提供了丰富的商品资源,同时也为跨境商家提供了…

AT89S52单片机智能寻迹小车自动红外避障趋光检测发声发光设计

wx供重浩:创享日记 对话框发送:寻迹 获取完整说明报告源程序数据 小车具有以下几个功能:自动避障功能;寻迹功能(按路面的黑色轨道行驶);趋光功能(寻找前方的点光源并行驶到位&…

C++ ini配置文件的简单读取使用

ini文件就是简单的section 下面有对应的键值对 std::map<std::string, std::map<std::string, std::string>>MyIni::readIniFile() {std::ifstream file(filename);if (!file.is_open()) {std::cerr << "Error: Unable to open file " << …

以STM32CubeMX创建DSP库工程方法一

以STM32CubeMX创建DSP库工程方法 略过时钟树的分配和UART的创建等&#xff0c;直接进入主题生成工程文件 它们中的文件功能如下&#xff1a; 1&#xff09;BasicMathFunctions 基本数学函数&#xff1a;提供浮点数的各种基本运算函数&#xff0c;如向量加减乘除等运算。 2&…

【MATLAB】EWT分解+FFT+HHT组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 EWTFFTHHT组合算法是一种广泛应用于信号处理领域的算法&#xff0c;它结合了经验小波变换&#xff08;Empirical Wavelet Transform&#xff0c;EWT&#xff09;、快速傅里叶变换&#x…

SpringBoot查询指定范围内的坐标点

使用Redis geo实现 redis geo是基于Sorted Set来实现的 Redis 3.2 版本新增了geo相关命令&#xff0c;用于存储和操作地理位置信息。提供的命令包括添加、计算位置之间距离、根据中心点坐标和距离范围来查询地理位置集合等&#xff0c;说明如下: geoadd&#xff1a;添加地理…

DCDC前馈电容与RC串并联电路

一、RC串并联电路特性分析 1、RC串联电路 RC 串联的转折频率&#xff1a; f01/&#xff08;2πR1C1&#xff09;&#xff0c;当输入信号频率大于 f0 时&#xff0c;整个 RC 串联电路总的阻抗基本不变了&#xff0c;其大小等于 R1。 2、RC并联电路 RC 并联电路的转折频率&…

零基础学Python的第五天||字符串(2)

raw_input和print 自从本课程开始以来&#xff0c;我们还没有感受到computer姑娘的智能。最简单的智能应该体现在哪里呢&#xff1f;想想小孩子刚刚回说话的时候情景吧。 小孩学说话&#xff0c;是一个模仿的过程&#xff0c;孩子周围的人怎么说&#xff0c;她&#xff08;他&…

redis源码从头深入分析(1)--acl文件

此篇为对redis源码的个人理解和分析,以一个初看源码的视角从头阅读源码,对各个函数,定义的类型进行解释并阐明其作用,让初读源码的人能够完全理解该定义类型及函数,最后形成对redis总体的一个认知。希望此篇能为初读redis源码的人提供一些帮助。 acl.c文件 acl是 Access…

02、Tensorflow实现手写数字识别(数字0-9)

02、Tensorflow实现手写数字识别&#xff08;数字0-9&#xff09; 01、Tensorflow实现二元手写数字识别&#xff08;二分类问题&#xff09; 02、Tensorflow实现手写数字识别&#xff08;数字0-9&#xff09; 开始学习机器学习啦&#xff0c;已经把吴恩达的课全部刷完了&…

zookeeper集群和kafka集群

&#xff08;一&#xff09;kafka 1、kafka3.0之前依赖于zookeeper 2、kafka3.0之后不依赖zookeeper&#xff0c;元数据由kafka节点自己管理 &#xff08;二&#xff09;zookeeper 1、zookeeper是一个开源的、分布式的架构&#xff0c;提供协调服务&#xff08;Apache项目&…

Shell 脚本自动化备份与恢复实践

文章目录 引言自动化备份脚本详解备份脚本示例恢复脚本示例 设置定时任务 crontab 自动备份总结 引言 在系统管理中&#xff0c;自动化备份与恢复流程是至关重要的一环。借助 Shell 脚本&#xff0c;我们能够轻松编写脚本实现数据备份和恢复&#xff0c;确保数据的安全性和完整…

【Openstack Train安装】二、NTP安装

网络时间协议&#xff1a;Network Time Protocol&#xff08;NTP&#xff09;是用来使计算机时间同步化的一种协议&#xff0c;它可以使计算机对其服务器或时钟源&#xff08;如石英钟&#xff0c;GPS等等)做同步化&#xff0c;它可以提供高精准度的时间校正&#xff08;LAN上与…

ACM程序设计课内实验(2) 排序问题

基础知识‘ sort函数 C中的sort函数是库中的一个函数&#xff0c;用于对容器中的元素进行排序。它的原型如下&#xff1a; template <class RandomAccessIterator, class Compare> void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);参数…