卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

重載與重寫的區(qū)別 java java synchronized鎖對(duì)象,當(dāng)對(duì)象引用是null的時(shí)候,鎖的是什么?

java synchronized鎖對(duì)象,當(dāng)對(duì)象引用是null的時(shí)候,鎖的是什么?謝謝!Java語言規(guī)范明確指出,如果鎖定的對(duì)象為null,則會(huì)發(fā)生NullPointerException。規(guī)范的內(nèi)容

java synchronized鎖對(duì)象,當(dāng)對(duì)象引用是null的時(shí)候,鎖的是什么?

謝謝

!Java語言規(guī)范明確指出,如果鎖定的對(duì)象為null,則會(huì)發(fā)生NullPointerException。規(guī)范的內(nèi)容如下:

表達(dá)式的類型必須是引用類型,否則會(huì)發(fā)生完全時(shí)間錯(cuò)誤。首先計(jì)算表達(dá)式,執(zhí)行同步語句。然后:如果表達(dá)式的求值由于某種原因完全完成,那么synchronized語句也會(huì)因?yàn)橥瑯拥脑蛲蝗煌瓿?。否則,如果表達(dá)式的值為null,則volatile的本質(zhì)是NullPointerException,它告訴JVM寄存器(工作內(nèi)存)中當(dāng)前變量的值是不確定的,需要從主存中讀??;synchronized是鎖定當(dāng)前變量,只有當(dāng)前線程才能訪問該變量,其他線程被阻塞。

2. Volatile只能在變量級(jí)別使用;synchronized可以在變量、方法和類級(jí)別使用。

3. Volatile只能實(shí)現(xiàn)變量修改的可見性和原子性,synchronized可以保證變量修改的可見性和原子性。

4. Volatile不會(huì)導(dǎo)致線程阻塞;synchronized可能會(huì)導(dǎo)致線程阻塞。

5. 用volatile標(biāo)記的變量不會(huì)被編譯器優(yōu)化;用synchronized標(biāo)記的變量可以被編譯器優(yōu)化。