Java 线程安全的 LinkedHashMap 实现?
Java Thread safe LinkedHashMap implementation?
我需要使用 LinkedHashMap
的 removeEldestEntry()
方法。
我以线程安全的方式使用 LinkedHashMap's
和 removeEldestEntry()
方法的最简单方法是什么?
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
}
});
我需要使用 LinkedHashMap
的 removeEldestEntry()
方法。
我以线程安全的方式使用 LinkedHashMap's
和 removeEldestEntry()
方法的最简单方法是什么?
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
}
});