gpt4 book ai didi

从 Synchronized block 调用 Java 方法

转载 作者:行者123 更新时间:2023-12-02 18:05:19 27 4
gpt4 key购买 nike

在Java中

假设我有这样的代码

class A {
method A(){
synchronized(this)
{
this.B();
}
}
method B(){
//do modification stuff here
}
}

我的问题是,如果一个线程在方法 A 上工作,而另一个线程在方法 B 上工作,那么我的同步块(synchronized block)如何受到保护。??

最佳答案

如果我正确理解你的问题,你想同步访问这两种方法:

class A{
synchronized void A() {
B();
}
synchronized void B() {
}
}

这样,A()B() 将使用相同的互斥体进行门控,并且如果一个线程尝试运行 B() 而另一个已经在运行 A(),则必须等待。

在您给出的示例中,如果 B() 是私有(private)方法,并且所有线程都通过其 A() 方法访问该对象,那么您就不会'不会有问题,因为运行 B() 的线程已经通过进入 A() 中的 synchronized{} block 来获取锁.

关于从 Synchronized block 调用 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28284253/

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