Atomic包總結

synchronized已經能知足咱們平常的線程安全需求了,java

  • synchronized是基於代碼阻塞的機制,
    • 也就是當某個線程佔用資源時,其餘線程是沒法進入的,
  • 若是這個線程出現問題的時候,
    • 出現大量線程阻塞,
    • CPU就會耗費大量資源來處理阻塞在外的這些線程,
  • 可是CPU的任務本不應如此,
    • 還很可能出現死鎖等問題,
  • 對於這樣的簡單操做反而顯得有些笨重,
    • 因此應該有更合適更高效的方法來處理這樣的問題。
  • 因此就有了CAS

synchronized是採用的是悲觀鎖策略,數組

  • 並非特別高效的一種解決方案

https://www.jianshu.com/p/84c75074fa03安全

在J.U.C下的atomic包提供了一系列的操做簡單,性能

  • 性能高效,並能保證線程安全的類去更新基本類型變量,數組元素,引用類型以及更新對象中的字段類型。
  • atomic包下的這些類都是採用的是樂觀鎖策略去原子更新數據,
    • 在java中則是使用CAS操做具體實現。
相關文章
相關標籤/搜索