在运行时从计划作业通过 setter 线程安全地更新单例的依赖关系
Thread-safely update a singleton's dependency via setter at runtime from scheduled job
我有一个基于 spring 的 java 应用程序,我的目标是在内存中缓存一堆对象以提高性能,并使用计划作业定期从数据源更新该缓存。
如果我将该映射存储在单例 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);
}
}
您可以为此特定目的实施 ReadWriteLock。
我有一个基于 spring 的 java 应用程序,我的目标是在内存中缓存一堆对象以提高性能,并使用计划作业定期从数据源更新该缓存。
如果我将该映射存储在单例 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);
}
}
您可以为此特定目的实施 ReadWriteLock。