Java 關鍵字-violate

簡介

  • 一個變量被此修飾則表明是對所有線程可見的,滿足一致性 即各個線程的工作內存能立即發現該變量的改變並保證一致性。
  • 防止指令重排序。

細節

一個變量被violate修飾,則被虛擬機解釋轉換成虛擬機識別的指令如下:

lock addl $Oxo,(%esp)
  • 多一個lock
  • 後面是空指令
    • lock和nop不能同時執行
  • lock作用
    • 使CPU的Cache立即寫入內存,該寫入動作會使其他CPU的Cache無效化。也即是對變量進行了store和write操作。 所以通過這個帶lock前綴的空操作能試對violate修飾的變量的修改對其他CPU立即可見
    • 設立了一個內存屏障,使後面的指令不能重排序到前面的指令。意味着所有之前的操作都已經執行完成了
發佈了44 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章