游乐游手机版
首页/科技数码/文章详情

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

时间:2026-01-08 13:55
由于 CAS 操作属于乐观派,它总是相信自己能成功完成操作。当多个线程同时对一个变量使用 CAS 操作时,只有一个会胜出并更新成功,其余的将会失败。然而,失败的线程不会被挂起,只是被告知失败并允许再

作为乐观派的代表,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
上一篇唯仕发布新款AF 56mm F1.2 Pro Z镜头,售价3459元 下一篇上海光源首获干涉及条纹 揭示平方公里阵列技术突破
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
国内首个开源鸿蒙机器人系统社区启动,破局国产软件生态
科技数码 · 2026-07-01

国内首个开源鸿蒙机器人系统社区启动,破局国产软件生态

6月30日,机器人ETF易方达(159530)盘中涨幅超过4 3%,报收1 555元,机器人板块整体表现活跃。消息面上,国内首个基于开源鸿蒙的机器人操作系统社区(M-Robots)正式启动运营并发布了年度发展路线,日本GMO INTERNET集团子公司与宇树科技达成合作协议。国产机器人软件生态建设取

ROI利剑悬顶,AI员工面临效益大考
科技数码 · 2026-07-01

ROI利剑悬顶,AI员工面临效益大考

先说说现在AI行业一个普遍现象:几乎所有公司都在按“使用量”来收费。不管是按token消耗算,还是按额度制走,本质上都是“用多少,付多少”。 这套模式放在模型API上当然没问题,但放到那些越来越深入企业工作流的Agent身上,就有点水土不服了。你想想,一个Agent为了完成一个任务,需要反复读取上下

武汉光谷三年投入超10亿元打造智能体之城
科技数码 · 2026-07-01

武汉光谷三年投入超10亿元打造智能体之城

6月29日,武汉光谷智能体经济大会正式召开,会上重磅发布了“光谷智能体引力计划”。根据规划,未来3年内,光谷将在政策扶持、算力基建、产业基金等领域投入超过10亿元,致力于全域打造智能体之城,抢占人工智能产业新高地。 具体如何推进?主要依托湖北科创供应链平台,设立光谷智能体场景发布厅,引导百亿级人工智

苹果印度梦受挫 iPhone 18 Pro机密文件泄露
科技数码 · 2026-07-01

苹果印度梦受挫 iPhone 18 Pro机密文件泄露

从暗网流出的文件来看,窃取苹果印度供应商塔塔电子数据的勒索软件组织,此次曝光的“重磅信息”中,明确包含了即将发布的iPhone 18 Pro机型的敏感组件清单、供应商名单以及实物照片。消息人士和文件内容均证实了这一点。 这绝非小事。苹果在全球供应商之间精密运转的iPhone组装业务,直接面临威胁。众

企业级AI聚焦全场景闭环办事加速成为业绩抓手
科技数码 · 2026-07-01

企业级AI聚焦全场景闭环办事加速成为业绩抓手

AI产业正从技术验证阶段迈向深度产业落地的关键转型期,这一趋势正成为驱动企业数智化增长的核心引擎。6月30日,联想乐享迎来重要升级——4 0版本正式发布。作为业界首个企业级超级智能体,此次升级带来了三项扎实成果:自主研制的Harness运行层、自我进化与反思机制,以及多场景Skill能力体系,三大支