Java Thread安全的LinkedHashMap实现?

时间:2015-02-22 02:39:07

标签: java multithreading hashmap thread-safety

我需要使用removeEldestEntry()的{​​{1}}方法。

以线程安全的方式使用LinkedHashMapLinkedHashMap's方法最简单的方法是什么?

2 个答案:

答案 0 :(得分:9)

您可以匿名扩展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
   }               
});

答案 1 :(得分:4)

java.util.Collections.synchronizedMap(map)返回由指定映射支持的同步(线程安全)映射。