我将分别讨论每个要点。
- 一些邪恶的代码可能会窃取你的锁(非常流行,但也有“偶然的”变体)
我更担心意外。这意味着该用法this是你的类的公开接口的一部分,应进行记录。有时需要其他代码使用你的锁的能力。诸如此类的事情都是如此Collections.synchronizedMap(请参阅javadoc)。
- 同一类中的所有同步方法都使用完全相同的锁,这会降低吞吐量
这太过简单了。仅仅摆脱synchronized(this)将无法解决问题。正确同步吞吐量需要更多考虑。
- 你(不必要地)暴露了太多信息
这是#1的变体。使用
synchronized(this)是界面的一部分。如果你不希望/不需要暴露它,请不要这样做。



