33得票2回答
"Compare And Set" 在 AtomicInteger 中是如何工作的?

AtomicInteger 与两个概念一起工作:CAS和volatile变量。 使用volatile变量可以确保当前值对所有线程可见,且不会被缓存。 但是,我对CAS(比较并设置)概念感到困惑,以下进行解释:public final int getAndIncrement() { ...

18得票5回答
AtomicInteger与Integer的性能差异

AtomicInteger 和 Integer 之间有性能差异吗?

14得票2回答
AtomicInteger.updateAndGet()和AtomicInteger.accumulateAndGet()之间有功能上的区别吗?

在哪种情况下 AtomicInteger.accumulateAndGet() 不能被替换为 AtomicInteger.updateAndGet(),或者这只是一种方法引用的便利性? 这里有一个简单的例子,在这个例子中我没有看到任何功能上的区别:AtomicInteger i = new...

11得票3回答
如何根据条件更新一个原子?

如何在当前值小于给定值时更新 AtomicInteger?思路如下:AtomicInteger ai = new AtomicInteger(0); ... ai.update(threadInt); // this call happens concurrently ... // insid...

10得票4回答
如果对int变量的读写是原子操作,为什么还需要AtomicInteger?

我在Oracle文档中读到: 对于引用变量和大多数原始变量(除了long和double),读取和写入都是原子的。 (我猜这个功能已经在某个新的JDK版本中添加了,因为我曾经认为所有原始变量的读/写都不是原子的) 这是否意味着AtomicInteger已经过时,不应在新项目中使用?

10得票2回答
for循环的每个循环周期都是一个原子操作吗?

incrementAndGet方法是下面这个AtomicBigInteger实现中的原子操作吗?我特别想知道for(; ;)部分。JVM是否保证for循环中的每个周期被原子执行? public final class AtomicBigInteger { private final...

8得票3回答
为什么不推荐使用基于AtomicInteger的Stream解决方案?

假设我有一个水果列表: List<String> f = Arrays.asList("Banana", "Apple", "Grape", "Orange", "Kiwi"); 我需要在每个水果前添加序列号并打印出来。水果或序列号的顺序并不重要,这是一个有效的输出:- 4...

7得票4回答
多线程中的AtomicInteger

我想要找出从0到1000000之间的所有质数。为了实现这一点,我写了这个愚蠢的方法: public static boolean isPrime(int n) { for(int i = 2; i < n; i++) { if (n % i == 0) ...