作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个场景,搜索了很多,但没有得到满意的答案。
有一个服务类,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/
我是一名优秀的程序员,十分优秀!