單純使用 volatile 關鍵字是不能保證線程安全的
- volatile 只提供了一種弱的同步機制,用來確保將變量的更新操作通知到其他線程
- volatile 語義是禁用 CPU 緩存,直接從主內存讀、寫變量。表現為:更新 volatile 變量時,JMM 會把線程對應的本地內存中的共享變量值刷新到主內存中;讀 volatile 變量時,JMM 會把線程對應的本地內存設置為無效,直接從主內存中讀取共享變量
- 當把變量聲明為 volatile 類型后,JVM 增加內存屏障,禁止 CPU 進行指令重排
- Java 自學指南
- Java 面試題匯總PC端瀏覽【點這里】
- Java知識圖譜
- Java 面試題匯總小程序瀏覽,掃二維碼