您的位置:首页技术文章
文章详情页

java - 如何理解AtomicInteger里的CAS操作?

【字号: 日期:2024-01-28 18:39:07浏览:16作者:猪猪

问题描述

下面这个方法,我不理解

public final int getAndIncrement() { for (;;) {int current = get();int next = current + 1;if (compareAndSet(current, next)) return current; }}

为何要循环直到成功?如果这期间有另外的线程更改了value,导致compareAndSet()返回false,那这就表面已经不是原子性了吧,还继续重复有啥意义?

问题解答

回答1:

它只是要实现写操作不会被覆盖掉,多线程情况下不会计算错误,如果按照你这么想要实现原子性,只能使用锁了,但是这样效率会低。

标签: java
相关文章: