Collections中有个私有静态方法synchronizedMap,返回一个
线程安全的SynchronizedMap类。定义如下:
public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) {
return new SynchronizedMap<K,V>(m);
}
SynchronizedMap类定义:
private static class SynchronizedMap<K,V>
implements Map<K,V>, Serializable {
private final Map<K,V> m; // Backing Map
final Object mutex; // Object on which to synchronize
SynchronizedMap(Map<K,V> m) {
if (m==null)
throw new NullPointerException();
this.m = m;
mutex = this;
}
............
}
所有的操作get,put,size,remove等方法里面都加上:
synchronized(mutex)