- volatile本質(zhì)是在告訴jvm當前變量在寄存器(工作內(nèi)存)中的值是不確定的效拭,需要從主存中讀仍菁;synchronized則是鎖定當前變量缎患,只有當前線程可以訪問該變量慕的,其他線程被阻塞住。
- volatile僅能使用在變量級別挤渔;synchronized則可以使用在變量肮街、方法、和類級別的蚂蕴。
- volatile僅能實現(xiàn)變量的修改可見性低散,不能保證原子性(線程A修改了變量還沒結束時,另外的線程B可以看到已修改的值,而且可以修改這個變量,而不用等待A釋放鎖,因為Volatile 變量沒上鎖);而synchronized則可以保證變量的修改可見性和原子性骡楼。
- volatile不會造成線程的阻塞;synchronized可能會造成線程的阻塞和上下文切換稽鞭。
- volatile標記的變量不會被編譯器優(yōu)化鸟整;synchronized標記的變量可以被編譯器優(yōu)化。
- 在使用volatile關鍵字時要慎重朦蕴,并不是只要簡單類型變量使用volatile修飾篮条,對這個變量的所有操作都是原子操作。當變量的值由自身決定時吩抓,如n=n+1涉茧、n++ 等,volatile關鍵字將失效疹娶。只有當變量的值和自身無關時對該變量的操作才是原子級別的伴栓,如n = m + 1,這個就是原級別的雨饺。所以在使用volatile關鍵時一定要謹慎钳垮,如果自己沒有把握,可以使用synchronized來代替volatile额港。
- “鎖是昂貴的”饺窿,謹慎使用鎖機制。
Volatile度苔、Synchronized兩者的區(qū)別聯(lián)系
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來入宦,“玉大人哺徊,你說我怎么就攤上這事∏颍” “怎么了落追?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長涯肩。 經(jīng)常有香客問我轿钠,道長,這世上最難降的妖魔是什么病苗? 我笑而不...
- 正文 為了忘掉前任疗垛,我火速辦了婚禮,結果婚禮上硫朦,老公的妹妹穿的比我還像新娘贷腕。我一直安慰自己,他們只是感情好咬展,可當我...
- 文/花漫 我一把揭開白布泽裳。 她就那樣靜靜地躺著,像睡著了一般破婆。 火紅的嫁衣襯著肌膚如雪涮总。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼铺纽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哟忍?” 一聲冷哼從身側響起狡门,我...
- 正文 年R本政府宣布,位于F島的核電站呜笑,受9級特大地震影響夫否,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叫胁,卻給世界環(huán)境...
- 文/蒙蒙 一凰慈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧驼鹅,春花似錦溉瓶、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽疾宏。三九已至张足,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坎藐,已是汗流浹背为牍。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- java的線程抽象內(nèi)存模型 java的線程抽象內(nèi)存模型中定義了每個線程都有一份自己的私有內(nèi)存席揽,里面存放自己私有的數(shù)...
- 1、鎖提供了兩種主要特性:互斥(mutual exclusion)和可見性(visibility)谓厘。 互斥即一次只...
- 文章參考自:鏈接 volatile 和 synchronized 特點 首先需要理解線程安全的兩個方面:執(zhí)行控制和...
- 在我們?nèi)粘i_發(fā)中竟稳,volatile属桦、synchronized兩個關鍵字我們經(jīng)常都會遇到。他們兩個往往都會和線程相關...
- ? 無論是工作工程中還是面試過程中都會被涉及到。因為最近在面試過程中經(jīng)常被問及到讲逛。再次做出簡單的回顧亏吝。 synch...