簡體   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