1

我有一个基于 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);
  }

}
4

1 回答 1

1

您可以为此特定目的实施ReadWriteLock 。

于 2016-12-27T09:20:48.627 回答