synchronized使用方式 java問題,synchronized(),里面為什么要帶參數(shù)?
java問題,synchronized(),里面為什么要帶參數(shù)?有三種常見的同步方法。第一種是修改靜態(tài)方法,即靜態(tài)方法是同步方法。簡而言之,如果一個線程現(xiàn)在調(diào)用這個方法,其他人就不能再調(diào)用它了。其次,
java問題,synchronized(),里面為什么要帶參數(shù)?
有三種常見的同步方法。第一種是修改靜態(tài)方法,即靜態(tài)方法是同步方法。簡而言之,如果一個線程現(xiàn)在調(diào)用這個方法,其他人就不能再調(diào)用它了。
其次,修改一個公共方法,以指示同一實(shí)例的方法只能依次調(diào)用。
第三個是您所說的參數(shù),即鎖定對象。
要準(zhǔn)確解釋它的作用并不容易。在大多數(shù)情況下,添加對象鎖是為了安全地操作對象。有些人可能只是把對象當(dāng)作鎖。同步執(zhí)行器不操作對象。
其實(shí),你可以先理解同步的含義,然后慢慢體會剩下的。
例如:假設(shè)有許多人想要修改文本文件。當(dāng)沒有鎖機(jī)制時,很可能很多人同時修改一個文本,并且會出現(xiàn)混亂。這個變化包含在那個變化中,以此類推。
如果使用鎖,則可以避免。當(dāng)每個人都開始修改時,先鎖定,修改后再釋放鎖。每次只允許一個人修改。
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。