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

有一个服务类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提到的最终关键字

10-06 15:33