AtomicInteger是一个提供原子操作的Integer的类。在java中i++或++i操作并不是线程安全的,在使用的时候,
不可避免的会使用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。
先看看AtomicInteger提供的接口:
public final int get(); //获取当前的值
public final int getAndSet(int newValue); //取当前的值,并设置新的值
public final int getAndIncrement(); //获取当前的值,并自增
public final int getAndDecrement();//获取当前的值,并自减
public final int getAndAdd(int delta);//获取当前的值,并加上预期的值
测试代码如下:
package com.test.auto;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @ClassName: ThreadTest
* @Description:
* @date 2017-2-7 上午10:55:13
*
*/
public class ThreadTest {
public static void main(String[] args) {
AtomicInteger ai = new AtomicInteger(0);
int i1 = ai.get();
v(i1);
int i2 = ai.getAndSet(5);
v(i2);
int i3 = ai.get();
v(i3);
int i4 = ai.getAndIncrement();
v(i4);
v(ai.get());
}
public static void v(int i) {
System.out.println("i : " + i);
}
}
打印: