其他分享
首页 > 其他分享> > JUC之Atomic

JUC之Atomic

作者:互联网


基本类型有AtomicBoolean 、 AtomicInteger 、AtomicLong、这 3 个类提供的方法几乎一模一样

包中类分为五种:

基本类型:

数组:

引用类型:

对象的属性:

AtomicLong 的常用方法如下

方法名 说明
long getAndIncrement() 以原子方式将当前值加1,注意,返回的是旧值。(i++)
long incrementAndGet() 以原子方式将当前值加1,注意,返回的是新值。(++i)
long getAndDecrement() 以原子方式将当前值减 1,注意,返回的是旧值 。(i–)
long decrementAndGet() 以原子方式将当前值减 1,注意,返回的是旧值 。(–i)
long addAndGet(int delta) 以原子方式将输入的数值与实例中的值(AtomicLong里的value)相加,并返回结果
long getAndSet(int newValue) 以原子方式设置为newValue的值,并返回旧值
long get() 获取 AtomicLong 中的值(value)
boolean compareAndSet(int expect,int update) 如果输入的数值等于预期值,则以原子方式将该值设置为输入的值。
void lazySet(int newValue) 最终会设置成newValue,使用lazySet设置值后,可能导致其他线程在之后的一小段时间内还是可以读到旧的值。
JDK 1.8 新增
long getAndUpdate(LongUnaryOperator updateFunction) 定函数的结果原子更新当前值,返回上一个值。
long updateAndGet(LongUnaryOperator updateFunction) 使用给定函数的结果原子更新当前值,返回更新的值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。

i++、++i、i--、--i只是为了帮助大家理解,并不是底层的实现就是它们。

标签:返回,JUC,long,int,更新,原子,Atomic,AtomicLong
来源: https://www.cnblogs.com/KylinBlog/p/16159488.html