Java Thread安全的LinkedHashMap实现?

use*_*406 8 java multithreading hashmap thread-safety

我需要利用这个removeEldestEntry()方法LinkedHashMap.

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

Kev*_*ede 11

您可以匿名扩展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
   }               
});
Run Code Online (Sandbox Code Playgroud)