java.util.concurrent.atomic.AtomicLong是怎么实现同步的,我搜索了下该类,貌似没有synchronized关键字
大家一起来讨论讨论吧简单介绍:利用像AtomicLong这样已有的线程安全对象管理类的状态是非常实用的。相比于
非线程安全对象,判断一个线程安全对象的可能状态和状态的转换要容易得多。这简化了维护和验证
线程安全性的工作。
这些类用来实现数字和对象引用的原子状态转换。把long类型的计数器替换为AtomicLong类型的,我们可以
确保所有访问计数器状态的操作都是原子的。
大家一起来讨论讨论吧简单介绍:利用像AtomicLong这样已有的线程安全对象管理类的状态是非常实用的。相比于
非线程安全对象,判断一个线程安全对象的可能状态和状态的转换要容易得多。这简化了维护和验证
线程安全性的工作。
这些类用来实现数字和对象引用的原子状态转换。把long类型的计数器替换为AtomicLong类型的,我们可以
确保所有访问计数器状态的操作都是原子的。
程序带来很多方便.其中:java.util.concurrent.atomic包是提供原子操作的基本类.如:AtomicLong类.为了提高
性能,AtomicLong等类在实现同步时,没有用synchronized关键字,而是直接使用了最低层(本地c语言实现代码)来完成的,
因而你是看不到用synchronized关键字的.
比如:AtomicLong类中原子操作方法:
public final boolean compareAndSet(long expect, long update) ;
就是直接使用SUN公司低层本地代码的原子方法(native方法):
public final native boolean compareAndSwapLong(...)
来实现的.
我网上查到他是用非锁定,非阻塞的方式实现的,不知道有没有c语言实现的代码
非常想看看代码的实现
我网上查到他是用非锁定,非阻塞的方式实现的,不知道有没有c语言实现的代码
非常想看看代码的实现
即使使用了他们也需要确保不存在其他可能存在的问题。通常依赖锁要更安全些
(synchronized,显示lock对象)
会不会出现我们不期望的结果?