我有一个场景,进行了很多搜索,但是没有得到满意的答案。
有一个服务类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提到的最终关键字