繁体   English   中英

Java中的挥发性与原子性,为什么我们需要原子工具包

[英]Volatile vs Atomic in Java, why do we need atomic toolkit

挥发消除了可见性和订购问题。 原子工具包提供了操作的原子性。 易失性使用发生于关系之前,而原子性使用进行比较和交换。

为什么需要引入新的抽象层,例如原子工具包,而不是增强volatile关键字本身? 原子工具包是否可以解决任何特定情况?

实际上,如果您仔细研究Atomic* 实现,那么您会发现它们全部都包含具有值的volatile字段。

IMHO原子已经是易失性机制的扩展,它提供了执行原子CAS操作的便捷方法。

隐藏CAS实施也有好处。 例如,热点jvm大量使用内在函数来降低性能。

更改现有语言结构(例如volatile很可能意味着您破坏了现有应用程序。 因此,这通常不是一个选择,尤其是对于Java语言而言。 创建新库不会影响现有应用程序,因此是完全向后兼容的。

除此之外, atomic包中的类还提供高级操作,例如compareAndSet ,您不能仅将它们添加到volatile关键字中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM