volatile

同步格言:若是你向一個變量寫值,而這個變量接下來可能被另外一個線程讀取,或者你從一個變量讀修值,而它的值多是前面由另外一個線程寫入的,此時必須使用同步安全

volatile用於修飾變量,它規定對其修飾變量的訪問必須從內存中獲取,從而確保變量的同步。線程

*多處理器的計算機可以暫時在寄存器或本地內存緩衝區中保存內存中的值。這麼作的結果就是在不一樣的處理器上運行的線程可能在同一地址上看到不一樣的值。內存

*編譯器可以改變指令執行的順序以使吞吐量最大化。這中順序上的變化不會改變代碼的語義,但編譯器假充只有在代碼中存在顯示的修改指令時,內存中的值纔會發生變化。編譯器

  可是,內存的值可能在另一個線程被修改。同步

 

在下面三個條件下,對一個域的並行訪問是安全的:編譯

*域是volatile的變量

*域是final的,而且在構造器調用完成後訪問的並行

*對域的訪問有鎖保護的計算機

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息