【发布时间】:2015-03-25 06:39:01
【问题描述】:
在 Java 8 之前,AtomicLong 类中的 CAS 代码是:
public final long incrementAndGet() {
for (;;) {
long current = get();
long next = current + 1;
if (compareAndSet(current, next))
return next;
}
}
但现在它已改为单一内在线:
public final long incrementAndGet() {
return unsafe.getAndAddLong(this, valueOffset, 1L) + 1L;
}
这段代码与前者相比有什么优势?这个新代码是如何工作的?
【问题讨论】:
标签: java performance concurrency