我有一个场景,搜索了一下,但没有得到满意的答案。Java方法线程安全
有一服务类别,WebserviceInvokerService,
class WebserviceInvokerService {
@Override
public void synchronized callBackFun() {...}
}
callBackFun ==>是当一个事件(一些事件)时它获取调用的函数。
在callBackFun中,我检查数据库并相应地进行服务调用(此类业务中没有涉及该类的实例成员)。
我已经使callBackFun同步。有可能会创建WebserviceInvokerService的多个实例,并且会在这些对象上调用callBackFun。
我想callBackFun被称为“同步”跨对象。那么callBackFun的“同步”在这种情况下会有什么意义。
只要对象的可变状态由2个或更多线程共享,就必须进行同步。既然你没有向我们展示或告诉我们你想要保护的状态,就不可能回答你的问题。 – scottb
如果你想跨对象进行同步,你应该在callBackFun方法内部使用同步的(WebserviceInvokerService.class){...} – Paulo
这听起来有点像你添加'synchronized'而没有真正理解原因。该方法改变的可变状态是什么使它不安全? – Kayaman