前言
在看《Java多線程編程核心技術(shù)》的時候杰扫,講到了volatile關(guān)鍵字遣耍,又是內(nèi)存模型粪滤,又是可見性的稍味,感覺這個關(guān)鍵字不簡單隧熙,自己又找了其他資料婉弹,果不其然睬魂,其背后的隱藏的內(nèi)容,都可以稱得上由volatile引發(fā)的血案了镀赌。首先看下這個單詞的意思氯哮,如下圖,摘自百度翻譯:volatile百度翻譯
我是學(xué)完了也沒理解到這個易變的/不穩(wěn)定的是怎么體現(xiàn)的佩脊,怪不得總是說volatile關(guān)鍵字蛙粘,而不會說"易變的"關(guān)鍵字垫卤,總感覺看到它的中文翻譯根本聯(lián)想不出來這玩意到底是干啥的。
volatile是什么出牧?
volatile是解決多線程同步問題的一個輕量級關(guān)鍵字穴肘,它具有以下特性:
- volatile能夠保證可見性
- volatile能夠保證有序性
- volatile不能保證原子性
這里先給結(jié)論,后面將會對每一項都做細致的分析舔痕。
關(guān)于volatile關(guān)鍵字的分析评抚,主要參考了以下資料:
- 你真的了解volatile關(guān)鍵字嗎?
- 周志明《深入理解Java虛擬機:JVM高級特性與最佳實踐》第十二章
- 為什么volatile不能保證原子性而Atomic可以伯复?
我主要是做一些總結(jié)慨代,然后加入一些自己的思考。