AtomicInteger

AtomicBoolean、AtomicInteger、AtomicLong这三个类提供的方法几乎一模一样,所以本篇以AtomicInteger为例进行讲解。
AtomicInteger常用的方法如下:
get()
  获取当前值

set(int newValue)
  对当前的原子操作设置新值

getAndSet(int newValue)
   设置新值并返回旧值 
lazySet(int newValue)

最终会设置成newValue,使用lazySet设置值后,可能导致其他线程在之后的一小段时间内还是可以读到旧值的。关于该方法的更多信息,可参考这篇文章

compareAndSet(int expect, int update)
   expect表示给定的值,update表示预设置的值,该方法的意思是,用给定的值与AtomicInteger当前的值比较,如果相等,则将当前值更新为update的值。
weakCompareAndSet(int expect, int update)
   这个方法和compareAndSet(int expect, int update)方法的内部是一样的,大致意思是: 如果当前值 == 预期值,则以原子方式将该设置为给定的更新值,具体原因还没太明白,可参考这篇博客
getAndIncrement() 
   对当前值+1,返回的是旧值,类似于i++,先赋值,后+1;
getAndDecrement()
    对当前值-1,返回的是旧值,类似于i--,先赋值,后-1;
getAndAdd(int delta)
    将当前的值+delta的值,并返回旧值。
incrementAndGet()
    对当前值+1,返回的是+1后的值,类似于++i;
decrementAndGet()
    对当前值-1,返回的是-1后的值,类似于--i;
addAndGet(int delta)
    对当前值+delat,并返回相加之后的结果。

你可能感兴趣的:(JUC,java)