AtomicInteger
一、为什么需要 AtomicInteger
由来:volatile 关键字可以保证多线程之间的可见性,但是不能保证原子操作。 所以就引入了AtomicInteger
类
概念:AtomicInteger是一个提供原子操作的Integer类,通过线程安全的方式操作加减
作用: AtomicInteger提供原子操作来进行Integer的使用,因此十分适合高并发情况下使用。 主要是用于计数的
采用CAS机制
二、方法
构造方法:
-
AtomicInteger()
创建一个新的AtomicInteger,初始值为0
。 -
AtomicInteger(int initialValue)
用给定的初始值创建一个新的AtomicInteger。
普通方法:
-
getAndIncrement()
原子上增加一个当前值。 相当于 i++ -
incrementAndGet()
原子上增加一个当前值。 相当于 ++i -
getAndDecrement()
原子减1当前值。 相当于 i– -
decrementAndGet()
原子减1当前值。 相当于 –i -
get()
获取当前值。
三、举个例子
public class AtomicTest {
// 多线程下线程安全的计数器
private volatile static AtomicInteger COUNT = new AtomicInteger(0);
public static void main(String[] args) {
for (int i = 0; i < 20 ; i++) {
new Thread(new Runnable() {
@Override
public void run() {
for (int j = 0; j <10000 ; j++) {
COUNT.incrementAndGet();// ++i
// COUNT.getAndIncrement();// i++
}
}
}).start();
}
while (Thread.activeCount() > 2) {
Thread.yield();
}
System.out.println(COUNT.get());
}
}
运行结果:
2000000
版权声明:本文为H_Q_Li原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。