程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 多線程-volatile關鍵字使用或者不使用沒有區別

多線程-volatile關鍵字使用或者不使用沒有區別

編輯:編程綜合問答
volatile關鍵字使用或者不使用沒有區別

我看了volatile的概念和例子,有一個例子是比較使用或者不使用volatile關鍵字的區別。

我兩份代碼全部運行後,結果卻是一樣的。這是為什麼呢?

是否是JDK1.8 已經不需要 volatile 關鍵字了呢?

最佳回答:


volatile 強調的領域,應該是在嵌入式設備上的(可能有誤)。因為在嵌入式設備,我們的程序運行的時候,會讀取寄存器的值,有些是傳感器的值。在程序運行時,當你定義了一個變量,它的值是從某個寄存器的地址取值得到。如果你在定義這個變量的時候,沒有加 volatile ,那麼編譯器會優化,為什麼會優化呢,你可以這麼思考,你在程序while循環裡面定義了一個INT 變量 ,賦值為1.當循環第二次到這裡的時候,編譯器說你上次就是1,這次也是1。“int a = 1”,這樣看是不是很有道理。但是在嵌入式設備上就不一樣了,因為你每次給A賦值的時候是從寄存器裡面取得,寄存器的值是會變的,比方一個溫度傳感器寄存器。那麼程序在第一次的時候去了正確的值,後面每一次都是第一次的值,顯然這樣是不行的,這就是編譯器的優化。加了 volatile 編譯器就不會優化,每次程序都會去指定的地址去取值。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved