更新時間:2020-06-10 16:12:09 來源:動力節點 瀏覽1994次
Java™語言包含兩種內在的同步機制:同步塊(或方法)和volatile變量。這兩種機制的提出都是為了實現代碼線程的安全性。其中Volatile變量的同步性較差(但有時它更簡單并且開銷更低),而且其使用也更容易出錯。
之所以要單獨提出volatile這個不常用的關鍵字原因是這個關鍵字在高性能的多線程程序中也有很重要的用途,只是這個關鍵字用不好會出很多問題。
首先考慮一個問題,為什么變量需要volatile來修飾呢?
要搞清楚這個問題,首先應該明白計算機內部都做什么了。比如做了一個i++操作,計算機內部做了三次處理:讀取-修改-寫入。
同樣,對于一個long型數據,做了個賦值操作,在32系統下需要經過兩步才能完成,先修改低32位,然后修改高32位。
假想一下,當將以上的操作放到一個多線程環境下操作時候,有可能出現的問題,是這些步驟執行了一部分,而另外一個線程就已經引用了變量值,這樣就導致了讀取臟數據的問題。
通過這個設想,就不難理解volatile關鍵字了。
volatile可以用在任何變量前面,但不能用于final變量前面,因為final型的變量是禁止修改的。也不存在線程安全的問題。
Java技術相關內容
Java Volatile關鍵字使用場景:http://www.ilovecolors.com.cn/tutorial_java_advance/1262.html
Java中Volatile關鍵字:http://www.ilovecolors.com.cn/tutorial_java_advance/1261.html
以上就是動力節點java培訓機構的小編針對“Java線程關鍵字,volatile關鍵字”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習