线程安全地通过setter在运行时从预定作业更新单身的依赖关系
问题描述:
我有一个基于spring的java应用程序,我的目标是缓存一堆对象在内存中的性能,并使用预定作业从数据更新缓存定期来源。线程安全地通过setter在运行时从预定作业更新单身的依赖关系
如果我在singleton spring bean中存储该映射,是否有线程安全的方式来在运行时更新该映射而不使访问/服务方法同步?在调用setMap(myNewMap)
时,是否可以在单例对象上执行一个不同步的方法的临时块?有必要吗?
class MySingletonCache {
private Map<String, Object> myMap;
// Called periodically from scheduled job
public void setMap(Map<String, Object> myMap) {
this.myMap = myMap;
}
// High concurrency, cannot make this synchronous
public Object findById(String id) {
return this.myMap.get(id);
}
}