高并发的情况下,i++
无法保证原子性,往往会出现问题,所以引入AtomicInteger
类。
构造方法
1、public AtomicInteger(int initialValue) 创建具有给定初始值的新 AtomicInteger。
参数:initialValue
- 初始值
2、public AtomicInteger() 创建具有初始值0
的新 AtomicInteger。
API
1、public final int get() 获取当前值。
返回:当前值
2、public final void set(int newValue) 设置为给定值。
参数:newValue
- 新值
3、public final void lazySet(int newValue) 最后设置为给定值。
参数:newValue
- 新值
4、public final int getAndSet(int newValue) 以原子方式设置为给定值,并返回旧值。
参数:newValue
- 新值
返回:以前的值
5、public final boolean compareAndSet(int expect, int update)
如果当前值 ==
预期值,则以原子方式将该值设置为给定的更新值。
参数:expect
- 预期值 update
- 新值
返回:如果成功,则返回 true。返回 False 指示实际值与预期值不相等。
6、public final boolean weakCompareAndSet(int expect, int update)
如果当前值 ==
预期值,则以原子方式将该设置为给定的更新值。可能意外失败并且不提供排序保证,所以只有在很少的情况下才对compareAndSet
进行适当地选择。
参数:expect
- 预期值 update
- 新值
返回:如果成功,则返回 true。
7、public final int getAndIncrement() 以原子方式将当前值加 1。
返回:以前的值
8、public final int getAndDecrement() 以原子方式将当前值减 1。
返回:以前的值
9、public final int getAndAdd(int delta) 以原子方式将给定值与当前值相加。
参数:delta
- 要加上的值
返回:以前的值
10、public final int incrementAndGet() 以原子方式将当前值加 1。
返回:更新的值
11、public final int decrementAndGet() 以原子方式将当前值减 1。
返回:更新的值
12、public final int addAndGet(int delta) 以原子方式将给定值与当前值相加。
参数:delta
- 要加上的值
返回:更新的值
18、public StringtoString() 返回当前值的字符串表示形式。
覆盖:类 Object
中的toString
返回:当前值的字符串表示形式。
19、public int intValue() 从类Number
复制的描述 以int
形式返回指定的数值。这可能会涉及到舍入或取整。
指定者:类 Number
中的intValue
返回:转换为 int
类型后该对象表示的数值。
20、public long longValue() 从类Number
复制的描述
以 long
形式返回指定的数值。这可能涉及到舍入或取整。
指定者:类 Number
中的longValue
返回:转换为 long
类型后该对象表示的数值。
21、public float floatValue()
从类 Number
复制的描述
以 float
形式返回指定的数值。这可能会涉及到舍入。
指定者:类 Number
中的floatValue
返回:转换为 float
类型后该对象表示的数值。
22、public double doubleValue()
从类 Number
复制的描述
以 double
形式返回指定的数值。这可能会涉及到舍入。
指定者:类 Number
中的doubleValue
返回:转换为 double
类型后该对象表示的数值。