Java 线程安全的 LinkedHashMap 实现?

Java Thread safe LinkedHashMap implementation?

我需要使用 LinkedHashMapremoveEldestEntry() 方法。

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

java.util.Collections.synchronizedMap(map) returns 由指定地图支持的同步(线程安全)地图。

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