Java并发编程之原子类怎么应用


这篇文章主要介绍“Java并发编程之原子类怎么应用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java并发编程之原子类怎么应用”文章能帮助大家解决问题。

原子数组

原子数组有AtomicIntegerArrayAtomicLongArrayAtomicReferenceArray,主要是用来对数组中的某个元素进行原子操作。三个类的方法基本类似,这里只介绍一下AtomicIntegerArray的方法。

AtomicIntegerArray

两个构造方法,第一个构造方法传入数组长度初始化一个所有值都为0的数组,第二个构造方法直接传入一个数组来进行初始化。

publicAtomicIntegerArray(intlength)publicAtomicIntegerArray(int[]array)

先获取数组中索引为i的值,然后对它进行加1

publicfinalintgetAndIncrement(inti)

先获取数组中索引为i的值,然后对它进行减1

publicfinalintgetAndDecrement(inti)

先对数组中索引为i的值进行加1,然后获取新值

publicfinalintincrementAndGet(inti)

先对数组中索引为i的值进行减1,然后获取新值

publicfinalintdecrementAndGet(inti)

先对数组中索引为i的值进行加delta,然后获取新值

publicfinalintaddAndGet(inti,intdelta)

先获取数组中索引为i的值,然后对它进行加delta

publicfinalintgetAndAdd(inti,intdelta)

先获取数组中索引为i的值,然后把它设置为newValue

publicfinalintgetAndSet(inti,intnewValue)

先获取数组中索引为i的值,然后执行指定的操作对其进行更新

publicfinalintgetAndUpdate(inti,IntUnaryOperatorupdateFunction)

先执行指定的操作对其进行更新,然后获取新值

publicfinalintupdateAndGet(inti,IntUnaryOperatorupdateFunction)

原子更新器

原子更新器有AtomicIntegerFieldUpdaterAtomicLongFieldUpdaterAtomicReferenceFieldUpdater,它们的作用是对某个对象的某个属性进行原子操作,同样三个类的操作基本相同,只是属性的类型不同而已,这里以AtomicIntegerFieldUpdater为例介绍基本方法。

AtomicIntegerFieldUpdater

类中提供了一个静态方法来创建对象,两个参数分别是tclass:要操作的类,fieldName:要操作的类的属性名

publicstatic<U>AtomicIntegerFieldUpdater<U>newUpdater(Class<U>tclass,StringfieldName)

先获取对象obj的属性fieldName的值,然后对其进行自增1操作

publicintgetAndIncrement(Tobj)

先获取对象obj的属性fieldName的值,然后对其进行自减1操作

publicintgetAndDecrement(Tobj)

先把对象obj的属性fieldName的值进行自增1,然后获取新值

publicintincrementAndGet(Tobj)

先把对象obj的属性fieldName的值进行自减1,然后获取新值

publicintdecrementAndGet(Tobj)

先获取对象obj的属性fieldName的值,然后对其加delta

publicintgetAndAdd(Tobj,intdelta)

先把对象obj的属性fieldName的值加delta,然后获取新值

publicintaddAndGet(Tobj,intdelta)

先获取对象obj的属性fieldName的值,然后把它的值设为newValue

publicintgetAndSet(Tobj,intnewValue)

先获取对象obj的属性fieldName的值,然后执行指定的操作把更新它的值

publicfinalintgetAndUpdate(Tobj,IntUnaryOperatorupdateFunction)

原子累加器

原子累加器LongAdderjdk1.8新增的一个类,它的作用和AtomicIntegerAtomicLong类似,但是在多线程情况下它的性能要高很多,原因是LongAdder维护了一个Cell数组,累加操作时每个线程对其中一个数据进行操作,最后再把结果进行汇总,提高了并发性。

LongAdder

无参构造方法什么也没有做,默认累加器的结果就是0

publicLongAdder()

sum方法就是对Cell数组中各单元的值进行求和,然后返回当前累加器的值

publiclongsum()

累加器自增1

publicvoidincrement()

累加器自减1

publicvoiddecrement()

累加器加x

publicvoidadd(longx)

累加器的值重置为0

publicvoidreset()

先获取累加器的值,然后再重置为0

publiclongsumThenReset()

关于“Java并发编程之原子类怎么应用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注主机评测网行业资讯频道,小编每天都会为大家更新不同的知识点。


上一篇:基于Python怎么实现交互式文件浏览器

下一篇:Vue项目网络请求代理到封装的方法是什么


Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器