Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions docs/java/basis/unsafe.md
Original file line number Diff line number Diff line change
Expand Up @@ -568,10 +568,12 @@ private void incrementAndPrint(int targetValue) {
return;
}
// 尝试 CAS 操作:如果当前值等于 targetValue - 1,则原子地设置为 targetValue
if (unsafe.compareAndSwapInt(this, fieldOffset, currentValue, targetValue)) {
// CAS 成功后立即打印,确保打印的就是本次设置的值
System.out.print(targetValue + " ");
return;
if (currentValue == targetValue - 1) {
if (unsafe.compareAndSwapInt(this, fieldOffset, currentValue, targetValue)) {
// CAS 成功后立即打印,确保打印的就是本次设置的值
System.out.print(targetValue + " ");
return;
}
}
// CAS 失败,重新读取并重试
}
Expand Down
Loading