在一个程序中,我计划使用在Spring IoC中生成的单例哈希映射,作为在不同线程之间共享的资源,但是我需要确保永远不会重新生成该实例,否则,我将丢失缓存的数据。我可以依靠吗?
default-lazy-init="true"
<util:map id="sharedResource" map-class="java.util.HashMap" key-type="KeyClass" value-type="ValueClass"/>
最佳答案
缺省情况下,Spring bean是单例,因此您很好。但是,不能保证两个或更多线程使用的哈希映射具有线程安全性。您可以通过使用ConcurrentHashMap作为地图类来克服这一问题。
话虽如此,我认为这是一个基本的缓存策略。如果它符合您的目的,那就太好了。如果您需要更复杂的缓存策略,建议研究Ehcache或Memchached。