java - 同步重写方法: Intrinsic Locks acquiring order for parent and child classes

标签 java multithreading locking

哪些锁保存在重写的非静态同步方法中。 请提供基类和子类的监视器锁的获取和释放顺序,以便解释java中可重入的好处。如果可以借助 JVM 维护的拥有线程和获取计数来解释序列以实现重入,那就太好了。

public class Widget {
    public synchronized void doSomething() {
    }
}

public class LoggingWidget extends Widget {
    public synchronized void doSomething() {
        super.doSomething();
    }
}

请注意,这个问题是专门为了解释隐式可重入锁而提出的,所以请不要将其标记为重复。

最佳答案

每个对象都有一个关联的监视器。当在对象上调用同步实例方法时,与该对象关联的监视器需要由调用线程持有。

对象的类是不相关的。

关于java - 同步重写方法: Intrinsic Locks acquiring order for parent and child classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869188/

相关文章:

java - 无法登录 Confluence Web 应用程序

java - 如何从长字符串中取出特定字符串

c# - 通过 C# 更新 UI 线程(文本框)

node.js - 为什么 fs.createReadStream ... pipe(res) 锁定读取的文件?

c# - 没有锁定的最佳并发线程共享内存架构是什么?

java - 将高等数学 'including root '字符串转为Java中ScriptEngine库代码执行

java - 如何确保Android应用程序正在访问真实服务器

python-3.x - 如何为运行直到键盘中断并且不返回任何内容的类编写单元测试?

python - 重写 threading.Thread 对象中的 start() 函数有什么问题?

java - 当锁持有非最终对象时,该对象的引用是否仍然可以被另一个线程更改?