CAS定義:compare and swap
CAS有三個操作數:內存值(現在的值)v,預期值(期望的值)A,要修改的值B,當且僅當期望的值A和現在內存值V相等時,纔將內存值修改爲B,否則什麼都不做。
在java中是如何利用cas實現原子操作的?
- AtomicInteger加載Unsafe工具,用來直接操作內存數據
- 用volatile修飾value字段,保證可見性
缺點:ABA問題,自旋時間過長
不變性imutable
如果一個對象被創建後,狀態就不能被修改那麼這個對象一定是線程安全的