本章主题: 针对多线程下的AtomicInteger做一个简要的回顾
1 简介:
AtomicInteger , 一个可以提供原子操作的Integer的类,在java语言中,(++i)自增,(i++)自减操作在多线程的环境
之中并不是线程安全的。 通常的情况需要我们加上一个Synchronized关键字,而AtomicInteger则通过一种线程安全的加减操作接口:
2 代码示例:
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); }}
其结果为:
005445
在多线程环境下AtomicInteger使用比较频繁,其持有的方法如下所述
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