1. 程式人生 > >深入理解Atomic原子操作和volatile非原子性

深入理解Atomic原子操作和volatile非原子性

log tile 修飾 深入 clas 同時 結果 一個 body

原子操作可以理解為: 一個數,很多線程去同時修改它,不加sync同步鎖,就可以保證修改結果是正確的

Atomic正是采用了CAS算法,所以可以在多線程環境下安全地操作對象。

volatile是Java的關鍵字,官方解釋:volatile可以保證可見性、順序性、一致性。

可見性:volatile修飾的對象在加載時會告知JVM,對象在CPU的緩存上對多個線程是同時可見的。

順序性:這裏有JVM的內存屏障的概念,簡單理解為:可以保證線程操作對象時是順序執行的,詳細了解可以自行查閱。

一致性:可以保證多個線程讀取數據時,讀取到的數據是最新的。(註意讀取的是最新的數據,但不保證寫回時不會覆蓋其他線程修改的結果)

深入理解Atomic原子操作和volatile非原子性