本章主題: 針對多線程下的AtomicInteger作一個簡要的回顧java
1 簡介:安全
AtomicInteger , 一個能夠提供原子操做的Integer的類,在java語言中,(++i)自增,(i++)自減操做在多線程的環境
多線程
之中並非線程安全的。 一般的狀況須要咱們加上一個Synchronized關鍵字,而AtomicInteger則經過一種線程安全的加減操做接口:atom
2 代碼示例:spa
package com.yinshuai.jdk; import java.util.concurrent.atomic.AtomicInteger; public class testAtomicInteger { public static void main(String[] args) { AtomicInteger ai = new AtomicInteger(); int i1 = ai.get(); v(i1); int i2 = ai.getAndSet(5); v(i2); int i3 = ai.getAndDecrement(); v(i3); int i4 = ai.get(); v(i4); int i5 = ai.getAndIncrement(); v(i5); int i6 = ai.getAndAdd(7); v(i6); } static void v(int i) { System.err.println(i); } }
其結果爲:
線程
0 0 5 4 4 5
在多線程環境下AtomicInteger使用比較頻繁,其持有的方法以下所述code
package test; import java.util.concurrent.atomic.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)
simpleTips接口