Java中的自旋锁,手动实现一个自旋锁

article/2025/8/20 15:42:11

自旋锁

CAS是实现自旋锁的基础,CAS利用CPU指令保证了操作的原子性,已达到锁的效果。自旋是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁, 当线程发现锁被占用时,会不断循环判断锁的状态,直到获取。这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU。

自旋锁 & 非自旋锁

什么是自旋?字面意思是 “自我旋转” 。在 Java 中就是循环的意思,比如 for 循环,while 循环等等。那自旋锁顾名思义就是「线程循环地去获取锁」。

非自旋锁,也就是普通锁。获取不到锁,线程就进入阻塞状态。等待 CPU 唤醒,再去获取。

自旋锁 & 非自旋锁的执行流程

某线程去获取锁(可能是自旋锁 or 非自旋锁),然而锁现在被其他线程占用了。它两获取锁的执行流程就如下图所示:

在这里插入图片描述

  • 自旋锁:一直占用 CPU 的时间片去循环获取锁,直到获取到为止。
  • 非自旋锁:当前线程进入阻塞,CPU 可以去干别的事情。等待 CPU 唤醒了,线程才去获取非自旋锁。

自旋锁有啥好处?

  • 阻塞 & 唤醒线程都是需要资源开销的,如果线程要执行的任务并不复杂。这种情况下,切换线程状态带来的开销比线程执行的任务还要大。
  • 而很多时候,我们的任务往往比较简单,简单到线程都还没来得及

http://chatgpt.dhexx.cn/article/XFXlWYnQ.shtml

相关文章

学习自旋电子学的笔记04:模拟自旋波在弯曲磁畴壁中传播

文章目录 前言零、笔记03中错误的补充改正1.保持电子的极化方向不变的原因2.Oxs_SpinXferEvolve类的额外补充说明3.时间演化器的时间步长相关补充说明 一、文章概述和要复现的微磁模拟1.文章概述2.要复现的微磁模拟 二、FIG.1三、 FIG.21. FIG.2(a-b)2. FIG.2(c-f) 四、 FIG.3五…

CAS和自旋到底是一个概念吗?

问题: CAS是 compare and swap ,就是一个比较工作内存和主内存的值是否相同,相同的话,就用新值来替换这么一个操作。 但是,为什么好多地方都说这是自旋呢? 我理解比较一次的话,成功就返回true了,失败&am…

CAS及CAS自旋

1. CAS简介 比较并交换(compare and swap, CAS),是原子操作的一种。在多线程没有锁的状态下,可以保证多个线程对同一个值的更新。 CAS可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定…

自旋玻璃(spin glass)、自旋冰(spin ice)和量子自旋液体(quantum spin liquid)(之二)

文章目录 13. 几何阻挫(Geometrical frustration)13.1 磁序(Magnetic ordering)13.2 数学定义13.3 水冰(water ice)13.4 Paulings model 的扩展:广义的阻挫13.5 人工几何阻挫铁磁体13.6 没有晶格…

CAS自旋

文章目录 1. CAS简介2. CAS的特点3. 自旋–比较和交换4. 什么是ABA问题5. ABA问题怎么解决6. 悲观锁7. 乐观锁8. CAS锁升级 CAS面试提问环节: synchronized、ReentrantLock、CAS全家桶发售HashMap、Hashtable、ConcurrentHashMap组合拳出击 1. CAS简介 比较并交换(…

自旋玻璃(spin glass)、自旋冰(spin ice)和量子自旋液体(quantum spin liquid)(之一)

文章目录 1. Giorgio Parisi 简介2. 复杂无序系统2.1 相变、序参量与对称性破缺2.2 复杂系统 3. 自旋玻璃简介3.1 自旋冻结3.2 亚稳态3.3 磁化弛豫3.4 玻璃化和无序系统3.5 Ising model3.6 自旋玻璃模型3.7 自旋玻璃相变 4. 磁场中的现象5. Edwards-Anderson model6. Sherringt…

office卸载工具怎么用(官方干净卸载方法)

https://jingyan.baidu.com/article/39810a23593f37b636fda60d.html

Office卸载安装问题

卸载Office 问题描述 此前已安装过新的Office,按照正常的卸载流程卸载后(控制面板卸载后),安装新的Office时,提示: 无法安装64位版本的Office,因为在电脑上已有32位程序。如下图所示。 **解…

32位office卸载不干净怎么办如何删除32位Office

以前在电脑上安装了32位系统的Office,现在想要换成64位的Office,但是在安装的时候提示无法进行安装,需要先卸载以前的32位Office,出现这种情况怎么办呢?如何彻底卸载干净32位系统的Office呢?下面就一起来看…

Office卸载不干净,注册表项权限修改后仍然无法删除的问题

Office卸载不干净,注册表项权限修改后仍然无法删除的问题 针对卸载Office最极端的情况,试试以下方法。 1.卸载开始菜单的office; 可以借助以下工具进行进行清除,完全卸载(但是对本人无效) 链接:https://…

mac m1 office卸载重装(学校官方正版)

卸载office 1、应用程序中将所有的microsoft相关软件移到废纸篓,可能还有outlook或者onedrive,清空废纸篓 2、cmdshiftG,输入/Library/Preferences,删除所有com.Microsoft开头的文件 3、进入/Library/PrivilegedHelperTools&…

卸载32位office安装64位office卸载不完全导致不能安装64位office时解决办法

转载自https://blog.csdn.net/zzfenglin/article/details/60780831 问题描述 安装64位office办公软件的时候提示已经安装32位的office办公软件所以无法继续安装,但实际上之前安装的32位的office办公软件已经卸载了。问题现象截图如下: 解决办法 从问题描…

office2019 完美卸载

记录下我日常手贱的经历。 事情的起因呢,是在家办公的时候呢,突然要写一份文档,然后呢,我的wps过期了,只能看,而不能编辑。然后我就打算装个office2019感受下。结果我就卸载了原来安装过但是已经过期了的o…

Office uninstall(专业office卸载工具)绿色单文件版V1.8.3 全面清除office卸载残留

Office uninstall 是一款专门为微软Office办公软件量身定做的office卸载工具,可以帮助大家彻底卸载已经安装到电脑上的Office软件,彻底解决office卸载不干净,无法重新安装的问题,全面兼容office2003、office2007、office2010、off…

Win10预装Office卸载工具

联想软件远程服务,让您足不出户,轻松解决电脑问题!软件调试、电脑加速、游戏加速、重装系统、修复浏览器、安装驱动,远程or上门?联想专家一对一服务任您挑选! 重要提示:您需要在电脑端下载并运行…

将office办公软件彻底从计算机中卸载清除

此情况针对于计算机系统中可能包含两个版本或更多的office同时存在导致在新建各种文档时会有些冲突,卸载不干净后,重新安装回去也还是无济于事,所以经过探索,将成功的方法发布给大家,希望对大家有所帮助。 有两种用于彻…

关于机器学习SVM中KKT条件的深入理解推导

关于机器学习SVM中KKT条件的深入理解推导 目前为止的已知KKT条件违反KKT条件的情况参考文献 本文面向在寻找KKT条件相关推到文章的读者,且默认前面关于svm的松弛下的模型和smo算法推到都已经了解。如果没有或者需要温习,请参看支持向量机SVM与SMO算法的的…

理解KKT条件

一、引言 对于无约束最优化问题,其搜索空间是无界的,只要确定了搜索方向和步长因子,便可以在一轮或几轮迭代之后找到最优解或近似最有解。这里举个不太恰当的例子,无约束最优化如同在浩瀚的宇宙中寻找体积最大的星球,你…

KKT条件(卡罗需-库恩-塔克条件)

1,定义 KKT是啥? 它是Karush、Kuhn和Tucker三个人。这三个人单独提出了在非线性规划中获得最优解的必要条件。 看着很复杂呀? 还好啦。。。只是将拉格朗日乘数法中的等式约束条件泛化到了不等式。 2,先来几个简单例子 为什么要…

KKT条件(Karush–Kuhn–Tucker conditions)

在约束最优化问题中,常常利用有条件的拉格朗日乘子法,进而一步步推导KKT条件。 1.最优化条件和下降搜索 给定一个多变量可微函数 ,是的局部最小值,这时有 如果,就存在使得 (对这边做个解释:…