我在理解 Java 中同步块的概念时遇到了一些麻烦。我觉得我已经很好地理解了同步方法。所以我想到了一个类比来帮助我从同步方法的角度来理解同步块。请让我知道我提出的这种等效方法是否正确。另外,我现在只针对非静态同步块提到了这一点。然而,静态同步块上的点也是受欢迎的。
public void method()
{
//code snipppet A
synchronized(objRef)
{
//code snipppet B
}
//code snipppet C
}
相当于
public void method() {
//code snippet A
objRef.sync_method();
//code snippet C
}
在 objRef 类中:
public synchronized void sync_method() {
//code snippet B
}
这个类比是基于同步块的行为与同步方法一样的逻辑。这意味着一旦一个线程获得了监视器上的锁,它就不允许其他线程干扰它的执行。线程仅在执行完整个同步方法后才放弃控制。