Skip to content

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

Open
Senrian wants to merge 1 commit intoSnailclimb:mainfrom
Senrian:main
Open

fix: Issue#2650 - 修复CAS示例代码的并发打印问题和livelock#2801
Senrian wants to merge 1 commit intoSnailclimb:mainfrom
Senrian:main

Conversation

@Senrian
Copy link

@Senrian Senrian commented Mar 26, 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.

1 participant