java中AtomicIntegerFieldUpdate類可以實現原子方式更新一個變量
對於這個變量有如下的約束:
- 更新器更新的必須是int類型,不能是其包裝類型Integer;
- 更新器更新的必須是volatile修飾的變量,確保線程之間共享變量的時候立即可見;
- 變量不能被static修飾,必須是實例變量。因爲Unsafe.objectFieldOffset()方法不支持靜態變量(CAS操作本質上是通過對象實例的偏移量來直接進行賦值);
- 更新器只能修改它可見範圍內的變量,因爲更新器是通過反射來得到這個變量,如果變量不可見就會報錯;