首页 游戏 软件 资讯 排行榜 专题
首页
科技数码
Java并发编程指南:深入理解无锁与CAS底层原理

Java并发编程指南:深入理解无锁与CAS底层原理

热心网友
15
转载
2026-01-08

作为乐观派的代表,CAS操作总是怀揣着必胜的信念。当多个线程同时对同一个变量执行CAS操作时,只会有一个胜出并成功更新,其余的都将以失败告终。不过,失败的线程并不会被挂起,它只是被告知操作失败,并允许再次尝试。当然,失败的线程也可以选择放弃操作,这一点从图中同样可以观察到。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

1. 无锁的概念

提起无锁(Lock-Free)概念,乐观主义者与悲观主义者总是被相提并论。在乐观主义者看来,事物总是倾向于往好的方向发展,认为糟糕情况发生的概率极低,因此他们可以无所顾忌地行动。然而,对于悲观主义者而言,他们总是担心如果发展趋势没有得到及时控制,未来将无法挽回,即使这种无法挽回的情况几乎不可能发生。

这两派观点被映射到并发编程中,就如同加锁(Locking)和无锁(Lock-Free)这两种策略。具体来说,加锁是一种悲观的策略,而无锁则是一种乐观的策略。

因为对于使用加锁的并发程序而言,它总是默认每次访问共享资源时必然会发生冲突,因此必须对每个数据操作实施加锁策略。

而无锁策略则总是假设在访问共享资源时没有冲突,线程可以在不加锁或等待的情况下继续运行。一旦检测到冲突,无锁策略会使用一种称为CAS的技术来确保线程执行的安全性,而这种CAS技术正是实现无锁策略的关键。

接下来,让我们深入探讨CAS技术的奥妙。

2. CAS

2.1 什么是CAS

CAS的全称是Compare And Swap,即比较并交换。其算法的核心思想如下:

图片

它包含三个参数:

V 代表要更新的变量 E 代表预期值 N 代表新值

如果V的值等于E的值,则将V的值设置为N。如果V和E的值不同,则表示另一个线程已经进行了更新,当前线程什么也不做。通俗的理解是,CAS操作需要我们提供一个预期值。当预期值与当前线程手中的变量值相同时,说明没有其他线程修改过该值,当前线程可以进行修改,即执行CAS操作。但如果预期值与当前值不匹配,则说明该值已被其他线程修改。此时,不执行更新操作,但你可以选择重新读取变量并尝试再次修改,或者也可以放弃操作。

由于CAS操作属于乐观派,它总是相信自己能成功完成操作。当多个线程同时对同一个变量使用CAS操作时,只有一个会胜出并更新成功,其余的都将会失败。然而,失败的线程不会被挂起,只是被告知失败并允许再次尝试。当然,也允许失败的线程放弃操作,这一点从图中也可以看出。

基于这样的原理,即使在CAS操作中没有锁,它仍然能感知到其他线程的操作对共享资源的影响,并执行相应的处理措施。同时,从这一点也可以看出,由于无锁操作中没有锁,因此不可能出现死锁情况,也就是说,无锁操作天生免疫死锁。

2.2 CPU对CAS的指令支持

也许我们会有这样的疑问。假设有多个线程执行CAS操作,且CAS中有很多步骤。有没有可能在判断V和E相同之后,正要赋值的时候,线程被切换了,导致数值被改变,从而引发数据不一致?答案是肯定的否定,因为CAS是一条系统原语。原语属于操作系统术语的范畴。它由若干条指令组成,是用于完成特定功能的过程。而且,原语的执行必须是连续的,在执行过程中不允许被中断。也就是说,CAS是一条CPU的原子指令,不会导致所谓的数据不一致问题。

来源:https://www.51cto.com/article/833768.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

财务系统更换的风险?企业转型的隐形陷阱与应对策略
业界动态
财务系统更换的风险?企业转型的隐形陷阱与应对策略

一、财务系统更换:一场不容有失的“心脏手术” 如果把企业比作一个生命体,那么财务系统就是它的“心脏”。这颗“心脏”一旦老化,更换就成了必须面对的课题。但这绝非一次简单的软件升级,而是一场精密、复杂、牵一发而动全身的“外科手术”。数据显示,超过70%的ERP(企业资源计划)项目实施未能完全达到预期,问

热心网友
04.28
模拟人工点击软件有哪些?类型盘点与应用指南
业界动态
模拟人工点击软件有哪些?类型盘点与应用指南

在企业数字化转型的浪潮中,模拟人工点击软件:从效率工具到智能伙伴 企业数字化转型的路上,绕不开一个话题:如何把那些重复、枯燥的电脑操作交给机器?模拟人工点击软件,正是因此而成为了提升效率、降低成本的得力助手。那么,市面上的这类软件到底有哪些?答案其实很清晰。它们大致可以归为三类:基础按键脚本、传统R

热心网友
04.28
ai智能体发展前景:2026年AI Agent如何重塑全
业界动态
ai智能体发展前景:2026年AI Agent如何重塑全

一、核心结论:AI智能体是通往AGI的必经之路 时间来到2026年,AI智能体这个词儿,早就跳出了PPT和实验室的范畴。它不再是飘在天上的技术概念,而是实实在在地成了驱动全球数字化转型的引擎。和那些只能一问一答的传统对话式AI不同,如今的AI智能体(Agent)本事可大多了:它们能自己规划任务步骤、

热心网友
04.28
ai智能体主要通过哪一层与外部系统交互:深度解析Agen
业界动态
ai智能体主要通过哪一层与外部系统交互:深度解析Agen

一、核心结论:AI智能体交互的“桥梁”是行动层 在AI智能体的标准架构里,它与外部系统打交道,关键靠的是“行动层”。可以这么理解:感知层是Agent的五官,决策层是它的大脑,而行动层,就是那双真正去执行和操作的手。这一层专门负责把大脑产出的抽象指令,“翻译”成外部系统能懂的语言,无论是调用一个API

热心网友
04.28
ai智能体人设描述怎么写?构建高转化AI角色的深度方法论
业界动态
ai智能体人设描述怎么写?构建高转化AI角色的深度方法论

一、核心结论:AI人设是智能体的“灵魂” 在构建AI应用时,一个核心问题摆在我们面前:如何写好AI智能体的人设描述?这个问题的答案,直接决定了智能体输出的专业度与用户端的信任感。业界实践表明,一个优秀的人设描述,离不开一个叫做RBGT的模型框架,它涵盖了角色、背景、目标和语气四个黄金维度。有研究数据

热心网友
04.28