synchronized使用方式 java問(wèn)題,synchronized(),里面為什么要帶參數(shù)?
java問(wèn)題,synchronized(),里面為什么要帶參數(shù)?有三種常見(jiàn)的同步方法。第一種是修改靜態(tài)方法,即靜態(tài)方法是同步方法。簡(jiǎn)而言之,如果一個(gè)線程現(xiàn)在調(diào)用這個(gè)方法,其他人就不能再調(diào)用它了。其次,
java問(wèn)題,synchronized(),里面為什么要帶參數(shù)?
有三種常見(jiàn)的同步方法。第一種是修改靜態(tài)方法,即靜態(tài)方法是同步方法。簡(jiǎn)而言之,如果一個(gè)線程現(xiàn)在調(diào)用這個(gè)方法,其他人就不能再調(diào)用它了。
其次,修改一個(gè)公共方法,以指示同一實(shí)例的方法只能依次調(diào)用。
第三個(gè)是您所說(shuō)的參數(shù),即鎖定對(duì)象。
要準(zhǔn)確解釋它的作用并不容易。在大多數(shù)情況下,添加對(duì)象鎖是為了安全地操作對(duì)象。有些人可能只是把對(duì)象當(dāng)作鎖。同步執(zhí)行器不操作對(duì)象。
其實(shí),你可以先理解同步的含義,然后慢慢體會(huì)剩下的。
例如:假設(shè)有許多人想要修改文本文件。當(dāng)沒(méi)有鎖機(jī)制時(shí),很可能很多人同時(shí)修改一個(gè)文本,并且會(huì)出現(xiàn)混亂。這個(gè)變化包含在那個(gè)變化中,以此類(lèi)推。
如果使用鎖,則可以避免。當(dāng)每個(gè)人都開(kāi)始修改時(shí),先鎖定,修改后再釋放鎖。每次只允許一個(gè)人修改。
java synchronized鎖對(duì)象,當(dāng)對(duì)象引用是null的時(shí)候,鎖的是什么?
謝謝
!Java語(yǔ)言規(guī)范明確指出,如果鎖定的對(duì)象為null,則會(huì)發(fā)生NullPointerException。規(guī)范的內(nèi)容如下:
表達(dá)式的類(lèi)型必須是引用類(lèi)型,否則會(huì)發(fā)生完全時(shí)間錯(cuò)誤。首先計(jì)算表達(dá)式,執(zhí)行同步語(yǔ)句。然后:如果表達(dá)式的求值由于某種原因完全完成,那么synchronized語(yǔ)句也會(huì)因?yàn)橥瑯拥脑蛲蝗煌瓿?。否則,如果表達(dá)式的值為null,則拋出NullPointerException。