Map map = Collections.synchronizedMap(new HashMap());
若此时该map[color=red]正在加入数据[/color],而我此时又要从map中取某些数据或遍历此时的map,这时我该怎么办呢?
请大人指点!!!
自己实现clone方法,可以参考如下代码:
HashMap<K,V> cloneMap = new HashMap<K,V>();
Iterator<Entry<K, V>> it = this.entrySet().iterator();
while(it.hasNext()){
Map.Entry<K, V> entry = it.next();
K key = entry.getKey();
V value = entry.getValue();
cloneMap.put(key, value);
}
使用 synchronizedMap 方法就是使map对像线程安全,这样的话就不能同时即写又读,可以再 synchronizedMap 之前 clone一个map对象出来,遍历时就遍历clone出来的对象