用于高度多线程的Java映射缓存

时间:2016-10-26 03:50:58

标签: java concurrency java.util.concurrent concurrenthashmap

请建议哪些地图可用于缓存。

我的用例是一个高度多线程的服务器,我想同步put map但是get map不同步。

我的期望是:如果发生,那么立即获取应该有最新的更新值。

对于我们的用例,在我们现在正在执行的put期间,整个map可能不需要同步,只有在尝试加载相同的值时才应该同步它。

1 个答案:

答案 0 :(得分:1)

ConcurrentHashMap是正确的答案,因为从多个线程同时使用是安全的。

或者,如果您可以添加库依赖项,Guava's Cache可能就是您要查找的内容。

所做的是使用HashMap或其他线程不安全的结构而没有在每个操作上进行适当的同步,包括读取和变异。这根本不是线程安全的,并且可能在terrible ways中失败。