CAS算法的弊端

 1、CAS 容易造成 ABA 問題 一個線程 a 將數值改成了 b,接着又改成了 a,此時 CAS 認爲是沒有變化,其實 是已經變化過了,而這個問題的解決方案可以使用版本號標識,每操作一次 version 加 1。在 java5 中,已經提供了 AtomicStampedReference 來解決問題。

 2、不能保證代碼塊的原子性 CAS 機制所保證的知識一個變量的原子性操作,而不能保證整個代碼塊的原子性。 比如需要保證 3 個變量共同進行原子性的更新,就不得不使用 synchronized 了。 
 
 3、CAS 造成 CPU 利用率增加 , CAS 裏面是一個循環判斷的過程,如果線程一直沒有獲取到狀態,cpu 資源會一直被佔用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章