Skip to content

fix: Issue#2650 - 修复CAS示例代码的并发打印livelock问题#2799

Open
Senrian wants to merge 9 commits intoSnailclimb:mainfrom
Senrian:master
Open

fix: Issue#2650 - 修复CAS示例代码的并发打印livelock问题#2799
Senrian wants to merge 9 commits intoSnailclimb:mainfrom
Senrian:master

Conversation

@Senrian
Copy link

@Senrian Senrian commented Mar 20, 2026

修复 Issue #2650

问题

现有代码使用 Thread.yield()currentValue == targetValue - 1 条件存在 livelock 风险:当线程读取值后被其他线程抢先更新,当前线程的 CAS 会永远失败。

解决方案

  1. 将跳过条件改为 currentValue >= targetValue,避免 livelock
  2. System.out.print 移入 CAS 成功块内,确保打印值与设置值一致
  3. 移除 Thread.yield() 避免不必要的 CPU 让出

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants