synchronizedMap
synchronizedMap
概述
SynchronizedMap
是集合工具类 Collections
的一个静态内部类
SynchronizedMap
实现了 Map
接口,同时实现了接口 Serializable
,支持序列化
- 在多线程的情况下,能够保证线程的安全
synchronizedMap
的获取示例
Map<Integer, String> map = new HashMap<>();
Map<Integer, String> synchronizedMap = Collections.synchronizedMap(map);
public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) {
return new SynchronizedMap<>(m);
}
synchronizedMap
源码解读
类的基本属性
private final Map<K,V> m;
final Object mutex;
构造函数
SynchronizedMap(Map<K,V> m) {
this.m = Objects.requireNonNull(m);
mutex = this;
}
SynchronizedMap(Map<K,V> m, Object mutex) {
this.m = m;
this.mutex = mutex;
}
常见的 API
方法
public int size() {
synchronized (mutex) {
return m.size();}
}
public boolean isEmpty() {
synchronized (mutex) {
return m.isEmpty();}
}
public V get(Object key) {
synchronized (mutex) {
return m.get(key);}
}
public V put(K key, V value) {
synchronized (mutex) {
return m.put(key, value);}
}
public V remove(