我正在测试一个代码,其中我有 2 个方法,并且每个方法中的一个语句是同步的。
private final Object obj1 = new Object();
private final Object obj2 = new Object();
public void method1(int result)
{
//there's a loop to create delay
synchronized (obj1){
sum = sum + result;
}
//there's a loop to create delay
}
public void method2(int result)
{
//there's a loop to create delay
synchronized (obj2){
sum = sum - result;
}
//there's a loop to create delay
}
我基本上在做的是我将结果添加到总和然后减去相同的数量然后打印总和。所以我的初始和最终金额应该是恒定的。
问题是当我使用 2 个差异对象作为锁时,我不知道为什么最终数量与初始数量不同。但是,当我使用“this”对象作为两个语句的锁时,它是不变的。但是使用“this”作为对象并没有比使用同步方法更快地执行时间。
我对同步概念仍然很陌生,因此不胜感激。