3 回答

TA贡献1804条经验 获得超7个赞
一些邪恶的代码可能盗取你的锁(这个很流行,也有一个“意外”变体)。 我更担心 不慎..这等于是 this
是类公开接口的一部分,应该有文档记录。有时需要其他代码使用您的锁的能力。对于像这样的事情,这是正确的。 Collections.synchronizedMap
(参见javadoc)。 同一类中的所有同步方法都使用完全相同的锁,从而降低了吞吐量。 这是过于简单化的想法;只是摆脱了 synchronized(this)
解决不了问题。正确的吞吐量同步将需要更多的思考。 你(不必要地)暴露了太多的信息 这是#1的一个变体。 synchronized(this)
是你界面的一部分。如果你不想/不想暴露这件事,就不要这样做。

TA贡献2012条经验 获得超12个赞
public void method1() { do something ... synchronized(this) { a ++; } ................}public void method2() { do something ... synchronized(this) { b ++; } ................}
class Test { private Object lockA = new Object(); private Object lockB = new Object();public void method1() { do something ... synchronized(lockA) { a ++; } ................}public void method2() { do something ... synchronized(lockB) { b ++; } ................ }
添加回答
举报