volatile關鍵字能否保證線程安全?


單純使用 volatile 關鍵字是不能保證線程安全的

  • volatile 只提供了一種弱的同步機制,用來確保將變量的更新操作通知到其他線程
  • volatile 語義是禁用 CPU 緩存,直接從主內存讀、寫變量。表現為:更新 volatile 變量時,JMM 會把線程對應的本地內存中的共享變量值刷新到主內存中;讀 volatile 變量時,JMM 會把線程對應的本地內存設置為無效,直接從主內存中讀取共享變量
  • 當把變量聲明為 volatile 類型后,JVM 增加內存屏障,禁止 CPU 進行指令重排


原文鏈接
 


 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM