java性能監(jiān)控工具 java的多線程同步,什么是同一對象監(jiān)視器?監(jiān)視器是什么?
java的多線程同步,什么是同一對象監(jiān)視器?監(jiān)視器是什么?Java多線程監(jiān)視器是同步機(jī)制。通常,在執(zhí)行線程同步時使用關(guān)鍵字“synchronized”。它有一個參數(shù)監(jiān)視器,通常指這個參數(shù)。Synrho
java的多線程同步,什么是同一對象監(jiān)視器?監(jiān)視器是什么?
Java多線程監(jiān)視器是同步機(jī)制。
通常,在執(zhí)行線程同步時使用關(guān)鍵字“synchronized”。它有一個參數(shù)監(jiān)視器,通常指這個參數(shù)。
Synrhonized被廣泛使用。其應(yīng)用層的語義是,任何非空對象都可以用作“鎖”
當(dāng)synchronized作用于方法時,它鎖定對象實(shí)例(this);
當(dāng)synchronized作用于靜態(tài)方法時,它鎖定對象對應(yīng)的類實(shí)例,因?yàn)轭悢?shù)據(jù)存在于持久帶中,所以靜態(tài)方法鎖相當(dāng)于類的全局鎖;
當(dāng)synchronized作用于靜態(tài)方法時,它會鎖定與對象對應(yīng)的類實(shí)例,而對象實(shí)例會鎖定相應(yīng)的代碼塊。
在hotspot JVM實(shí)現(xiàn)中,鎖有一個特殊的名稱:object monitor。
java synchronized鎖對象,當(dāng)對象引用是null的時候,鎖的是什么?
謝謝
!Java語言規(guī)范明確指出,如果鎖定的對象為null,則會發(fā)生NullPointerException。規(guī)范的內(nèi)容如下:
表達(dá)式的類型必須是引用類型,否則會發(fā)生完全時間錯誤。首先計(jì)算表達(dá)式,執(zhí)行同步語句。然后:如果表達(dá)式的求值由于某種原因完全完成,那么synchronized語句也會因?yàn)橥瑯拥脑蛲蝗煌瓿?。否則,如果表達(dá)式的值為null,則拋出NullPointerException。