哪个更快int [0]或AtomicInteger?

Sag*_*gar 1 java performance java-8

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

int[] index = {0};
index[0]++;
Run Code Online (Sandbox Code Playgroud)

VS

AtomicInteger index = new AtomicInteger(0); 
index.getAndIncrement()
Run Code Online (Sandbox Code Playgroud)

Eug*_*ene 8

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

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

真正的竞争环境中有一些更快的东西叫做LongAdder,所以你可能想要使用它.