原子类 atomic原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

原子类 atomic原理
Atomic类是Java5中实现线程安全的最常用的几个类之一,常见的有AtomicInteger、AtomicLong以及AtomicReference等类。

它们的实现都基于CAS(Compare and Swap)技术,保证每次操作不需要锁。

Atomic类提供了很多有用的方法,如获取/更新、递增/递减,可以很好地替代传统带锁类。

一、面向原子类的Compare And Swap(CAS)
1.什么是CAS:CAS是一种乐观锁机制,全称为Compare And Swap,它包含3个操作数:内存位置V,旧的预期值A,要修改的新值B。

当且仅当 V 的值等于A时,CAS 才会将V的值改为B,否则它什么都不会做;如果V的值不等于A,那么他会假装这次修改成功并返回V的值,所以它保证了每次操作都是有效的。

2.CAS的应用场景:由于CAS机制的原理,它被用来保证线程安全。

Atomic类可以实现原子性操作,并且不需要锁机制,因此更加优化了代码的执行效率。

三、Atomic类的实现
1.AtomicInteger:这是一个原子性的Integer类,可以实现原子性的累加、累减操作。

2.AtomicLong:它是一个原子性的Long类,可以实现原子性的累加、
累减操作。

3.AtomicReference:它是一个原子性的引用类,可以实现原子性的赋值操作,并可以设置初始值。

四、Atomic类的应用
1.原子性计数器:AtomicInteger可以用来实现原子性的累加、累减操作,可以用来统计信息,如日志次数统计。

2.原子性循环:AtomicInteger可以用来实现循环的原子性处理,这比使用锁或者同步块更加高效。

3.原子性引用:AtomicReference可以用来实现引用的原子性更新,并
且可以设置初始值。

五、Atomic类的优缺点
优点:
1.操作简单:Atomic类可以实现简单的原子性操作,不需要复杂的同
步块或者锁机制;
2.性能高效:Atomic类可以大大提高代码的执行性能;
3.使用范围广:Atomic类可应用于很多场景,比如原子性计数器,原
子性循环以及原子性引用等。

缺点:
1.应用范围有限:Atomic类只能应用于数值或者引用对象,对于其他容器类型,还是需要通过锁机制来实现原子性的更新;
2.数据复杂度高:要使用Atomic类,就必须把数据存储在多个Atomic 类中,增加了数据的复杂度,并且也降低了数据的可读性。

总结:Atomic类是Java5中实现线程安全的最常用的几个类之一。

常用的有AtomicInteger、AtomicLong以及AtomicReference等类,它们的实现是基于CAS(Compare and Swap)技术,可以实现简单且高效的原子性操作,可以用来替代传统带锁类,但它们的使用范围有一定的局限性,并且数据也很复杂,因此要选择恰当的地方才能真正发挥优势。

相关文档
最新文档