如何解决是否可以在 Java 上实现自己的 AtomicInteger? (jdk.internal.misc.Unsafe)
是否可以在 Java 中实现我自己的 AtomicInteger
?
我在方法背后看到的:
public final int addAndGet(int delta) {
for (;;) {
int current = get();
int next = current + delta; // Only difference
if (compareAndSet(current,next))
return next;
}
}
public final int incrementAndGet() {
for (;;) {
int current = get();
int next = current + 1; // Only difference
if (compareAndSet(current,next))
return next;
}
}
所以无论如何都需要使用 compareAndSet。这是:
public final boolean compareAndSet(int expectedValue,int newValue) {
return U.compareAndSetInt(this,VALUE,expectedValue,newValue);
}
哪里
private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe()
;
所以所有的原子都使用 Unsafe(我不太清楚,并且非常怀疑工作中是否需要它),我猜它使用的是低级/cpu 指令
Compare and Swap
我的问题是:是否可以在 java 上编写原子,或者无论如何需要调用 Unsafe
并最终得到它?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。