- java.lang.Object
-
- java.lang.Number
-
- java.util.concurrent.atomic.AtomicInteger
-
- 实现的接口:Serializable
注意(官方翻译):
AtomicInteger 在Java 1.5就已经存在了,该类不是 java.lang.Integer 的替代品!该类中并没有自定义equals、hashCode和compareTo等方法。 因为原子变量预计会发生变异,所以它们是哈希表键的糟糕选择。
使用场景介绍:
原子计数器),而无需使用Synchronized关键字。| 构造函数 | 描述 |
|---|---|
| AtomicInteger() | 创建一个具有初始值为0的 AtomicInteger |
| AtomicInteger(int initialValue) | 使用给定的初始值创建一个新的 AtomicInteger |
方法介绍:
| 方法修饰符、返回类型 | 方法名 | 描述 |
|---|---|---|
| final int | get() | 返回当前值 |
| int | intValue() | 以int形式返回当前值,底层就是调用的get() |
| final int | addAndGet() | 以原子方式将给定值添加到当前值,并在添加后返回新值 |
| final int | getAndAdd | 以原子方式将给定值添加到当前值并返回旧值 |
| final int | crementAndGet | 以原子方式将当前值增加1,并在增加之后返回新值。 它等效于++i 操作 |
| final int | getAndIncrement | 以原子方式递增当前值并返回旧值。 它等效于i ++操作 |
| final int | decrementAndGet | 以原子方式将当前值减1,并在减后返回新值。 它等效于 i-- 操作 |
| final int | getAndDecrement | 以原子方式减少当前值并返回旧值。 它等效于 --i操作 |
demo:
- public static void main(String[] args) {
- AtomicInteger atomicInteger = new AtomicInteger(10);
-
- System.out.println(atomicInteger.get()); //10
-
- System.out.println(atomicInteger.intValue()); //10
-
- System.out.println(atomicInteger.addAndGet(1)); //11
- System.out.println(atomicInteger); //11
-
- System.out.println(atomicInteger.getAndAdd(1)); //11
- System.out.println(atomicInteger); //12
-
- System.out.println(atomicInteger.incrementAndGet()); //13
- System.out.println(atomicInteger); //13
-
- System.out.println(atomicInteger.getAndIncrement()); //13
- System.out.println(atomicInteger); //14
-
- System.out.println(atomicInteger.decrementAndGet()); //13
- System.out.println(atomicInteger); //13
-
- System.out.println(atomicInteger.getAndDecrement()); //13
- System.out.println(atomicInteger); //12
- }
方法介绍:
| 方法修饰符、返回类型 | 方法名 | 描述 |
|---|---|---|
| final boolean | compareAndSet(int expectedValue, int newValue) | 如果当前值等于预期值,以原子方式将值设置为newValue,修改成功返回true,否则false |
compareAndSet方法实际上是做了两步操作:
demo:
- public static void main(String[] args) {
- AtomicInteger atomicInteger = new AtomicInteger(10);
-
- System.out.println(atomicInteger.compareAndSet(10,20)); //true
-
- System.out.println(atomicInteger.compareAndSet(10,20)); //false
- }