主要是鎖不同。
修飾方法時,對於靜態方法,是把 class 作爲鎖;對於非靜態方法,是把 this 對象當做鎖;
修飾代碼塊時,是把任何對象作爲鎖,如果鎖對象爲空,會拋出 NullPointerException,但是修飾方法不會;
在鎖的作用區域上,修飾方法時是整個方法體;而修飾代碼塊時只有對應的代碼塊。後者更加靈活和細粒度。
可以把修飾方法看作是修飾代碼塊的一種特殊形式,一種快捷方式。
主要是鎖不同。
修飾方法時,對於靜態方法,是把 class 作爲鎖;對於非靜態方法,是把 this 對象當做鎖;
修飾代碼塊時,是把任何對象作爲鎖,如果鎖對象爲空,會拋出 NullPointerException,但是修飾方法不會;
在鎖的作用區域上,修飾方法時是整個方法體;而修飾代碼塊時只有對應的代碼塊。後者更加靈活和細粒度。
可以把修飾方法看作是修飾代碼塊的一種特殊形式,一種快捷方式。