日期:2014-05-20  浏览次数:20662 次

研究java源代码:AtomicLong是怎么实现同步的(jdk5.0新加的特性)
java.util.concurrent.atomic.AtomicLong是怎么实现同步的,我搜索了下该类,貌似没有synchronized关键字
大家一起来讨论讨论吧

简单介绍:利用像AtomicLong这样已有的线程安全对象管理类的状态是非常实用的。相比于
非线程安全对象,判断一个线程安全对象的可能状态和状态的转换要容易得多。这简化了维护和验证
线程安全性的工作。
这些类用来实现数字和对象引用的原子状态转换。把long类型的计数器替换为AtomicLong类型的,我们可以
确保所有访问计数器状态的操作都是原子的。

------解决方案--------------------
你没有真的案例来做,光说还是比较难以理解的,
有了案例并且把代码写出来,这才比较好分析
------解决方案--------------------
引用楼主 boxiuzhen 的帖子:
java.util.concurrent.atomic.AtomicLong是怎么实现同步的,我搜索了下该类,貌似没有synchronized关键字
大家一起来讨论讨论吧

简单介绍:利用像AtomicLong这样已有的线程安全对象管理类的状态是非常实用的。相比于
非线程安全对象,判断一个线程安全对象的可能状态和状态的转换要容易得多。这简化了维护和验证
线程安全性的工作。
这些类用来实现数字和对象引用的原子状态转换。把long类型的计数器替换为AtomicLon…

------解决方案--------------------
探讨
哈哈,有了这些类以后就不用写大段的同步块了,代码应该会好看很多

------解决方案--------------------
直接使用 CPU 指令——比较并交换(compare-and-swap, CAS)

http://en.wikipedia.org/wiki/Compare_and_swap