我有一个场景,搜索了很多,但没有得到满意的答案。
有一个服务类,WebserviceInvokerService,
class WebserviceInvokerService {
@Override
public void synchronized callBackFun() {...}
}
callBackFun ==> 是在事件(某些事件)发生时调用的函数。
在 callBackFun 中,我检查数据库并相应地进行服务调用(该业务中没有涉及该类的实例成员)。
我已使 callBackFun 同步。有可能会创建多个 WebserviceInvokerService 实例,并在这些对象上调用 callBackFun。
我希望跨对象“同步”调用 callBackFun。因此,在这种情况下,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/