Java 线程安全的 LinkedHashMap 实现?

标签 java multithreading hashmap thread-safety

我需要使用 LinkedHashMapremoveEldestEntry() 方法。

以线程安全的方式使用 LinkedHashMap 的removeEldestEntry() 方法的最简单方法是什么?

最佳答案

您可以匿名扩展 LinkedHashMap改变 removeEldestEntry(...) 的行为,然后将匿名类的实例包装在同步映射中。你没有提到你需要什么类型的参数,所以我使用 <String, Integer>在这个例子中。

Map<String, Integer> map = Collections.synchronizedMap(new LinkedHashMap<String, Integer>() {
   private static final long serialVersionUID = 12345L; // use something random or just suppress the warning
   @Override
   protected boolean removeEldestEntry(Entry<String, Integer> eldest) {
      return size() > MAX_SIZE; // how many entries you want to keep
   }               
});

关于Java 线程安全的 LinkedHashMap 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653889/

相关文章:

java - Spring boot - 使用 JPA 在关系数据库中存储和检索数据时出现 UnsatisfiedDependencyException

java - Action 监听器java问题

c# - 取消长操作

java - 为什么线程执行给出不同的输出?

java - 在 Hashmap 中传递类以及如何使用键获取值

java - 在迭代 Hashmap 时删除元素

java - 通过 GlassFish 服务器使用 REST - 如何允许使用 HTML 输入更新列表并返回 JSON 对象?

java - 在建筑物中创建 "windows"的循环? - Java Swing

c++ - SIGSEGV 不终止进程

java键/值对对象,不是数组/映射