我想要一个同步块,其中要同步的对象是从方法调用返回的:
...
synchronized( someGetMethod() ) {
// synchronized block
}
...
是否假设“someGetMethod”是同步的或仅“//同步块”部分?
先感谢您
编辑:我有一个集合(要锁定的对象的映射)。“someGetMethod”检查地图上是否存在对象,如果不存在,它将添加该对象并返回它以便锁定。从下面的答案中,我了解到“someGetMethod”可以返回Map上已有的值,但在进入同步块之前,切换到另一个线程,这可能会删除上述值。因此,另一个线程可能通过“someGetMethod”进行相同的检查,现在得到不同的结果。所以看来我应该从同步块中进行删除,是否有更好的选择?
POPMUISE
守着星空守着你
相关分类