Java并发库(八):java5原子性操作类的应用

深切怀念传智播客张孝祥老师,特将其代表作——Java并发库视频研读两遍,受益颇丰,记以后阅

08.java5原子性操作类的应用

       Java5的线程并发库

       java.util.concurrent在并发编程中很常用的实用工具类。

                     |----locks为锁和等待条件提供一个框架的接口和类,

它不同于内置同步和监视器

                     |----atomic类的小工具包,支持在单个变量上解除锁的线程安全编程。

                            可以对基本类型【AtomicInteger】、数组中的基本类型【AtomicIntegerArray】、类中的基本类型等进行操作【AtomicIntegerFieldUpdater】

                            |----AtomicInteger

构造方法摘要

AtomicInteger()           创建具有初始值 0 的新 AtomicInteger。

AtomicInteger(int initialValue)           创建具有给定初始值的新 AtomicInteger。

方法摘要

 int

addAndGet(int delta)           以原子方式将给定值与当前值相加。

 boolean

compareAndSet(int expect, int update)           如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。

 int

decrementAndGet()           以原子方式将当前值减 1。

 double

doubleValue()           以 double 形式返回指定的数值。

 float

floatValue()           以 float 形式返回指定的数值。

 int

get()           获取当前值。

 int

getAndAdd(int delta)           以原子方式将给定值与当前值相加。

 int

getAndDecrement()           以原子方式将当前值减 1。

 int

getAndIncrement()           以原子方式将当前值加 1。

 int

getAndSet(int newValue)           以原子方式设置为给定值,并返回旧值。

 int

incrementAndGet()           以原子方式将当前值加 1。

 int

intValue()           以 int 形式返回指定的数值。

 void

lazySet(int newValue)           最后设置为给定值。

 long

longValue()           以 long 形式返回指定的数值。

 void

set(int newValue)           设置为给定值。

 String

toString()           返回当前值的字符串表示形式。

 boolean

weakCompareAndSet(int expect, int update)           如果当前值 == 预期值,则以原子方式将该设置为给定的更新值。

                            |----AtomicIntegerArray

构造方法摘要

AtomicIntegerArray(int length)           创建给定长度的新 AtomicIntegerArray。

AtomicIntegerArray(int[] array)           创建与给定数组具有相同长度的新 AtomicIntegerArray,并从给定数组复制其所有元素。

方法摘要

 int

addAndGet(int i, int delta)           以原子方式将给定值与索引i 的元素相加。

 boolean

compareAndSet(int i, int expect, int update)           如果当前值== 预期值,则以原子方式将位置i 的元素设置为给定的更新值。

 int

decrementAndGet(int i)           以原子方式将索引i 的元素减 1。

 int

get(int i)           获取位置i 的当前值。

 int

getAndAdd(int i, int delta)           以原子方式将给定值与索引i 的元素相加。

 int

getAndDecrement(int i)           以原子方式将索引i 的元素减 1。

 int

getAndIncrement(int i)           以原子方式将索引i 的元素加 1。

 int

getAndSet(int i, int newValue)           将位置i 的元素以原子方式设置为给定值,并返回旧值。

 int

incrementAndGet(int i)           以原子方式将索引i 的元素加 1。

 void

lazySet(int i, int newValue)           最后将位置i 的元素设置为给定值。

 int

length()           返回该数组的长度。

 void

set(int i, int newValue)           将位置i 的元素设置为给定值。

 String

toString()           返回数组当前值的字符串表示形式。

 boolean

weakCompareAndSet(int i, int expect, int update)           如果当前值== 预期值,则以原子方式将位置i 的元素设置为给定的更新值。


共享才有所谓的线程问题,像局部变量根本就不存在。如果一个变量/数组/类的成员被共享,多个线程需要操作,那么才可能用到原子类。

 

你可能感兴趣的:(Java并发库(八):java5原子性操作类的应用)