volatile 揮發(fā)性的骇径;不穩(wěn)定的;爆炸性的者春;反覆無常的
http://dict.youdao.com/w/volatile/#keyfrom=dict.
Volatile 變量
Volatile 變量具有 synchronized 的可見性特性破衔,但是不具備原子特性。這就是說線程能夠自動發(fā)現(xiàn) volatile 變量的最新值钱烟。Volatile 變量可用于提供線程安全晰筛,但是只能應(yīng)用于非常有限的一組用例:多個變量之間或者某個變量的當(dāng)前值與修改后值之間沒有約束。因此拴袭,單獨使用 volatile 還不足以實現(xiàn)計數(shù)器读第、互斥鎖或任何具有與多個變量相關(guān)的不變式(Invariants)的類(例如 “start <=end”)。
出于簡易性或可伸縮性的考慮拥刻,您可能傾向于使用 volatile 變量而不是鎖怜瞒。當(dāng)使用 volatile 變量而非鎖時,某些習(xí)慣用法(idiom)更加易于編碼和閱讀般哼。此外吴汪,volatile 變量不會像鎖那樣造成線程阻塞,因此也很少造成可伸縮性問題蒸眠。在某些情況下漾橙,如果讀操作遠遠大于寫操作,volatile 變量還可以提供優(yōu)于鎖的性能優(yōu)勢楞卡。
用volatile修飾的變量霜运,線程每次使用這個變量的時候,都會讀取這個變量最后修改的值臀晃;經(jīng)常誤用的用法:當(dāng)原子性操作使用觉渴,錯誤 錯誤 錯誤 重要的事情說三遍!;胀铩案淋!
線程直接從主內(nèi)存中讀取,沒有相應(yīng)的拷貝险绘,可用于線程之間的通信踢京;重要的事情: 不常誤用成同步;除非像long,int 這些的賦值等原子性操作才可以宦棺,a++這種都不是原子性操作瓣距;
1、普通變量代咸、用volatile修飾的變量的區(qū)別蹈丸?
2、volatile使用的場合?
http://www.ibm.com/developerworks/cn/java/j-jtp06197.html
http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html
普通變量--主內(nèi)存與線程工作內(nèi)存的示意圖