我有定义主要方法的类。当我运行此类时,它将从帐户表中加载帐户数据,并在主类中填充一个全局变量。现在我的项目中的要求是,可以动态更新帐户表。为了解决这个问题,我订阅了帐户表上的最新时间戳,并使用它来检查哈希表中的数据是否最新。
在这里使用hashMap是否明智?不是在我的主程序中使用ehcache或hashmap相同。两者在我的JVM中占用相同的空间。我试图了解何时在Java程序中使用hashMap以及何时使用Ehcache
答案 0 :(得分:2)
HashMap
不是并发的。因此,您无法更新它。
ConcurrentHashMap
是。所以你想要那个。
Ehcache(堆上)是一个ConcurrentHashMap
,具有到期和逐出处理。
它还符合JSR107,因此可以轻松地在许多框架中进行透明缓存。
但是,如果您知道地图中将包含多少个元素。而且您知道除非更换它们,否则它们永远不会过期,然后ConcurrentHashMap
将满足您的需求。
最重要的是,Ehcache是增强的ConcurrentHashMap
。
答案 1 :(得分:1)
使用EhCache,因为它可以像HashMap一样工作,同时可以更改其配置。
虽然数据集很小,但将其完全加载到内存(HashMap)中可能是可行的,否则,您必须确定要为其分配多少内存,而必须保留一些其他内容。
这是EhCache派上用场的地方:
HashMap:
有时,高速缓存中包含的数据不是最新的(错误或数据库在没有应用程序知识的情况下进行操作)。如果没有清除机制,HashMap将保留该数据。尽管EhCache有机会(TTL,TTI)将其删除,并在必要时加载最新数据。