1. 程式人生 > >java中Volatile修飾符的含義

java中Volatile修飾符的含義

線程 代碼 sync 一個 vol tracking ava 變量 拷貝

在java語言中:為了獲得最佳速度,同意線程保存共享成員變量的私有拷貝。並且僅僅當線程進入或者離開同步代碼塊時才與共享成員變量的原始值進行對照。

volatilekeyword的作用就是提示vm:對於這個成員變量不能保存它的私有拷貝。而應直接與共享變量進行交互。

volatile修飾符修飾的成員變量在每次被線程訪問時。都強迫從共享內存中重讀該成員變量的值。

並且,當成員變量發生變化時。又強迫線程將變化了的值寫回共享內存,這樣在不論什麽時刻。兩個不同的線程總是看到某個成員變量的同一個值。這樣當多個線程同一時候與某個對象交互時,就必要要註意到讓線程及時的得到共享成員的變化。

註意:在兩個或者很多其它的線程訪問的成員變量上使用volatile。當要訪問的變量已在synchronized代碼塊中,或者為常量時。不必使用。

java中Volatile修飾符的含義