class A {
public synchronized void myOneMethod() {
// ...
}
}
class B extends A {
public synchronized void myOtherMethod() {
// ...
}
}
// ...
B myObject;
// ...
myObject.myOneMethod(); // acquires lock
myObject.myOtherMethod(); // same lock?
Run Code Online (Sandbox Code Playgroud)
我如何理解同步模型,我会说是的,确实如此,因为锁/监视器与实例myObject相关联,并且定义方法的位置并不重要.但我是对的吗?如果没有,为什么?如果是的话,你为什么确定,我不是?:-)
Dav*_*d Z 13
是的,你是对的,你也得到了正确的解释.没什么可补充的.
请注意,如果方法是静态的,那么它们将在不同的对象上同步,即它们各自的类(A和B).
编辑:为什么我确定?我不知道,你为什么不确定?;-) myObject只是一个对象 - myObject来自A类的属性和来自B类的属性之间没有任何区别.(从技术上讲,你可以使用反射来找出哪些是哪个,所以必须有一些区别,但暂时忘记了反思.对于对象的常见操作没有区别.)