gpt4 book ai didi

父类(super class)的Java同步私有(private)方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:31:16 27 4
gpt4 key购买 nike

我有继承自 Base 的类 A 和 B。

Base 有一个私有(private)方法。有可能A和B同时执行了这个方法。

所以我想同步那个方法。如果我只是在签名中放置“同步”关键字,是否会使 A 和 B 的执行同步(共享同一个锁)?或者我是否需要生成一个静态锁对象...?

抱歉,有点糊涂了...

最佳答案

如果您的代码看起来有点像下面的示例,那么它不是线程安全的,您需要包含某种形式的同步以确保对私有(private)方法 increment 的调用是原子的,并确保能见度。在这个简单的示例中,使 getNewCounter 同步就足够了。使用锁定对象也可以。

public class Base {
private int counter;

private void increment() {
counter++;
}
protected int getNewCounter() {
increment();
return counter;
}
}

public class A extends Base {
public int aMethod() {
return getNewCounter();
}
}

public class B extends Base {
public int anotherMethod() {
return getNewCounter();
}
}

关于父类(super class)的Java同步私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706256/

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