2 回答

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
和
public class Example {
public void synchronized getCount() {
...
}
}
它正在當(dāng)前對(duì)象上同步this。其他類(lèi)能夠獲取當(dāng)前對(duì)象的引用并將其用作監(jiān)視器鎖定:
public class OtherClass {
public void otherMethod() {
Example example = new Example();
synchronized (example) {
...
}
}
}
例如,這可能會(huì)得到意外的結(jié)果,導(dǎo)致getCount在otherMethod執(zhí)行時(shí)被阻塞。
在第一種方法中,由于監(jiān)視器鎖lockObject是私有的,因此其他類(lèi)無(wú)法直接訪問(wèn)它,因此它比第二種方法更可取。

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
簡(jiǎn)而言之-
在方法級(jí)別使用鎖定時(shí),您將獲得已同步方法的完整類(lèi)的對(duì)象的鎖定。
假設(shè)是否有任何用戶(hù)附帶一些閃亮的代碼來(lái)執(zhí)行方法,直到Universe結(jié)束..這將導(dǎo)致其他線(xiàn)程因使用類(lèi)中的其他方法而被阻塞。
這是監(jiān)視對(duì)象和同步塊是首選方式的原因。
添加回答
舉報(bào)