2016-12-26 25 views
1

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

} 

回答

相关问题