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 ++;
}
................
}添加回答
举报
