Java中關於volatile關鍵字的一些總結

2021-08-13 02:36:00 字數 360 閱讀 9628

最近在工作時,發現之前的專案中有volatile關鍵字。然後自己查了點資料,對這個總結一下。

一、volatile確保了在應用中的可視性。

當我們對乙個域用volatile修飾時,只要對這個域進行了寫操作,其他所有的讀操作都可以看到這個修改。不同的任務中,即便有本地快取,這個被volatile修飾的域也會被刷到主存當中。

public class demo

讀取和寫入都是直接針對記憶體的。

另外,如果這個域只能通過同步來訪問,比如上面的number。同步也會導致向主存中重新整理,因此,如果乙個域有synchronized或同步語句塊來防護,那這個域就不需要設定為volatile。

java 中volatile關鍵字

1.volatile關鍵字往往用於多執行緒,保證了執行緒可以正確讀取其他執行緒傳入的值。2.volatile的特殊規則保證了volatile變數值修改後的新值立刻同步到主記憶體,每次使用volatile變數前立即從主記憶體中重新整理,因此volatile保證了多執行緒之間的操作變數的可見性,而普通變...

java中關鍵字volatile

1.用在多執行緒同步變數時,執行緒為了提高效率,將某成員變數 如a 拷貝了乙份 如b 執行緒中對a的訪問其實訪問的是b。只在某些動作時才進行a和b的同步。因此存在a和b不一致的情況。volatile就是用來避免這種情況的。volatile告訴jvm,它所修飾的變數不保留拷貝,直接訪問主記憶體中的 也...

Java中volatile關鍵字

當多個執行緒操作共享資料時,執行緒先讀取記憶體中的資料,並各自快取乙份,然後對快取資料進行修改,最後再寫入到記憶體中,但有時候由於程式執行速度快 如while操作 導致沒有及時去記憶體中讀取新的資料,而此時有可能其它執行緒已經修改了共享的資料,這就可能導致程式執行出現不可想象的偏差,而volatil...