JUC之CAS學習和Final的不變性

CAS定義:compare and swap

CAS有三個操作數:內存值(現在的值)v,預期值(期望的值)A,要修改的值B,當且僅當期望的值A和現在內存值V相等時,纔將內存值修改爲B,否則什麼都不做。

在java中是如何利用cas實現原子操作的?

  • AtomicInteger加載Unsafe工具,用來直接操作內存數據
  • 用volatile修飾value字段,保證可見性

缺點:ABA問題,自旋時間過長

不變性imutable

如果一個對象被創建後,狀態就不能被修改那麼這個對象一定是線程安全的

 

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