Java:超类中的同步方法获得与子类中相同的锁,对吗?

汉诺·菲茨(Hanno Fietz):
class A {
    public synchronized void myOneMethod() {
        // ...
    }
}

class B extends A {
    public synchronized void myOtherMethod() {
        // ...
    }
}

// ...

B myObject;

// ...

myObject.myOneMethod(); // acquires lock
myObject.myOtherMethod(); // same lock?

我对同步模型的理解是,可以,因为锁/监视器与实例myObject关联,并且在哪里定义方法都没有关系。但是我说的对吗?如果没有,为什么?如果是,您为什么确定,但我不确定?:-)

大卫Z:

是的,您是对的,您也得到了正确的解释。没什么可补充的。

请注意,如果方法是static,则它们将在不同的对象(即它们各自的类(A和B))上同步。

编辑:我为什么确定?我不知道,你为什么不确定?;-) myObject只是一个对象- myObject来自类A 属性和来自类B 属性之间没有任何区别。(从技术上讲,您可能可以使用反射来找出哪些是哪个,因此必须有有一些区别,但现在暂时不用思考。对于对象的常见操作没有区别。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

子类中的方法可以重载超类中的方法吗?

为什么从子类的超类调用方法中获得“ this”?

Java:从超类构造函数中的子类调用的方法

您如何在Java中从超类调用子类方法?

Java:在超类方法签名中返回子类

超类引用无法在Java中调用子类方法

Java继承:在超类中调用子类方法

从 Java 中超类类型的 ArrayList 调用子类方法

Java在超类方法中返回不带通用参数的子类

子类java中的“重写”超类成员

超类和子类中几乎相同的方法发生冲突。为什么?

对子类中的子类方法使用超类参数

我可以在 Flutter 中获得与 React Native 中的 <TouchableOpacity /> 相同的效果吗?

如何确保某些方法从子类(Java)中的方法从抽象超类中调用

在java中,我们可以将超类Object传递给子类引用吗?

您可以通过Java中的超类访问子类变量吗

Java-在子类中初始化超类变量吗?

我可以通过Java中的超类引用访问子类对象的属性吗?

Java在类中同步方法

如何在Java中从其超类方法停止/退出子类方法执行

在Java中,“ this”在继承该方法的子类上调用的超类方法中表示什么?

如何从修饰的子类方法中调用重写的超类方法

如何在C#中获得与Java中相同的替代体验?

有没有更简单的方法可以在Java中的子类和超类的ArrayList上调用子类的方法

java - 如何在java中获得与nodejs代码相同的base64 hmac?

在C#中无法获得与python中相同的哈希

Java中的父类和子类可以具有相同的实例变量吗?

Java继承问题。在超类数组中调用子类方法不会编译

静态方法中的同步块将获取类级别锁或对象级别锁