多線程中常常碰到 volatile關鍵字,可是一直都沒有深刻理解。經過在網絡上查找資料,如今本身作一個簡單清晰的總結。網絡
多線程執行時,老是會保存一份線程私有的變量,因此纔會形成,多線程同時訪問時會結果不一致的狀況(同時訪問 i 變量,可是線程自身複製了私有變量到線程內,而後操做完在寫入到外面這個 i , 在不採用同步的方式下,最後一個線程將成功把它的私有變量賦給 i 變量,致使問題的產生)。多線程
可是volatile關鍵字,告訴 jvm, 強制線程不容許給這個變量複製私有變量,必須使用共享內容,因此不管誰操做變量,不論讀寫,都直接操做共享內存,即變量只有一份。jvm