天天看點

AtomicInteger線程安全的操作加減

參考連結:http://blog.csdn.net/u012734441/article/details/51619751

AtomicInteger,一個提供原子操作的Integer的類。在Java語言中,++i和i++操作并不是線程安全的,在使用的時候,不可避免的會用到synchronized關鍵字。而AtomicInteger則通過一種線程安全的加減操作接口。

下面通過簡單的例子對比來看一下 AtomicInteger 的強大的功能

class Counter {
    private volatile int count = ;

    public synchronized void increment() {
        count++; // 若要線程安全執行執行count++,需要加鎖
    }

    public int getCount() {
        return count;
    }
}

class Counter {
    private AtomicInteger count = new AtomicInteger();

    public void increment() {
        count.incrementAndGet();
    }

    // 使用AtomicInteger之後,不需要加鎖,也可以實作線程安全。
    public int getCount() {
        return count.get();
    }
}
           

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)