gpt4 book ai didi

java - 具有重写方法的可重入锁?

转载 作者:行者123 更新时间:2023-12-02 02:50:48 26 4
gpt4 key购买 nike

public class A
{
public synchronized void doSomething()
{
System.out.println("Class A");
}
}

public class B extends A
{
public synchronized void doSomething()
{
System.out.println("Class B");
super.doSomething();
}
}

我是线程新手,需要了解以下锁定属性。我无法理解上面代码中可重入的意义。据说如果不实现重入,上面的代码就会死锁。

最佳答案

当线程T调用B.doSomething()时,它将获得B<类型的实例i的锁。然后它调用 super.doSomething() ,它需要在允许进入之前获得 i 上的锁。因为 T 已经获得了 i 的锁,所以它可能会通过而无需再次获得它(这在它释放之前获得的锁之前是不可能的)。

如果线程 T 已经拥有他必须获得的锁,则这种自由 channel 行为称为可重入锁。

也许您想阅读 ReentrantLock 的 javadoc这也解释了这个概念。

关于java - 具有重写方法的可重入锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43861478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com