【发布时间】:2018-02-09 08:53:59
【问题描述】:
有没有一种方法可以在代码块上调用同步(或类似的东西)。例如(伪代码),
public int getA(int id) {
if (flag) {
return synchronized(fetchA(id))
} else {
return fetchA(id)
}
}
public int fetchA(int id) {
if (map.get(id) == null) {
p = generate(id)
map.put(id, p)
return map.get(id)
} else {
return map.get(id)
}
}
在这种情况下,如果 flag 设置为 true,我希望函数对对象 map 进行锁定,否则不进行锁定。我读过同步只对对象进行锁定。还有什么我可以用来代替同步的吗?
【问题讨论】:
-
你可以打开一个同步块
synchronized(this) { fetchA(id); }如果这是你的要求
标签: java multithreading concurrency