synchronized 修飾方法和修飾代碼塊的區別

主要是鎖不同。
修飾方法時,對於靜態方法,是把 class 作爲鎖;對於非靜態方法,是把 this 對象當做鎖;

修飾代碼塊時,是把任何對象作爲鎖,如果鎖對象爲空,會拋出 NullPointerException,但是修飾方法不會;

在鎖的作用區域上,修飾方法時是整個方法體;而修飾代碼塊時只有對應的代碼塊。後者更加靈活和細粒度。

可以把修飾方法看作是修飾代碼塊的一種特殊形式,一種快捷方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章