哪个更快int [0]或AtomicInteger?

时间:2018-04-19 18:18:10

标签: java performance java-8

如果我不关心线程安全哪个更好?

int[] index = {0};
index[0]++;

VS

AtomicInteger index = new AtomicInteger(0); 
index.getAndIncrement()

1 个答案:

答案 0 :(得分:8)

from . import functions有其名称有一个原因,它在多线程访问的情况下是原子的,其访问受到保护,可以被多个线程安全地增加(如果你想要通过AtomicInteger或障碍) 。这些成本显而易见。它执行volatile操作(比较和交换,即使它在许多CPU上都是本机的,它仍然没有与增加普通变量相比)。

另一方面,int(或int数组或任何非线程安全对象)是一个普通变量,不需要同步访问任何东西;但是在多线程环境中,它是无用的(读取会产生不正确的结果)。

真正竞争的环境中有一些更快的东西,称为CAS,所以你可能想要使用它。