gpt4 book ai didi

Java方法线程安全

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:04 25 4
gpt4 key购买 nike

我有一个场景,搜索了很多,但没有得到满意的答案。

有一个服务类,WebserviceInvokerService,

class WebserviceInvokerService {
@Override
public void synchronized callBackFun() {...}
}

callBackFun ==> 是在事件(某些事件)发生时调用的函数。

在 callBackFun 中,我检查数据库并相应地进行服务调用(该业务中没有涉及该类的实例成员)。

我已使 callBackFun 同步。有可能会创建多个 WebserviceInvokerService 实例,并在这些对象上调用 callBackFun。

我希望跨对象“同步”调用 c​​allBackFun。因此,在这种情况下,callBackFun 的“同步”将有意义。

最佳答案

如果您使用 java 多个实例 WebserviceInvokerServices,方法将在这些实例中的每一个中同步,但不会跨实例。

您可能正在寻找一把锁。

你可以试试这个:

private final static Lock lock = new ReentrantLock();

@Override
public void callBackFun() {
lock.lock();
try {
// Do things here
} finally {
lock.unlock();
}
}

编辑:添加了 @Wyzard 提到的 final 关键字

关于Java方法线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40204358/

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