java Unsafe工具類提供了一個方法
這個就是一個cas操作,原子操作。比較var1, 在var2偏移即offset位置的值是否為var4。如果是var4,更新為var5,傳回true。否則,不做更新傳回false
最近,聽同僚說了cas用到項目裡面,感覺高大上。學習了一下,包裝了一個cas整型操作
寫了一測試類
這裡可以通過cas實作,線程安全。cas有點就是不會有鎖的開銷,上下文切換。也有缺點,自旋浪費資源,不能對多個資源保證線程安全
這裡需要注意兩點
1. 使用反射擷取Unsafe對象
2. 注意offset的擷取