Collections.synchronizedMap和?Collections.synchronizedList
1. 代理map或者list
2. 每個方法都帶鎖
~~~
private static class SynchronizedMap<K, V> implements Map<K, V>, Serializable {
private static final long serialVersionUID = 1978198479659022715L;
private final Map<K, V> m;
final Object mutex;
private transient Set<K> keySet;
private transient Set<Entry<K, V>> entrySet;
private transient Collection<V> values;
SynchronizedMap(Map<K, V> var1) {
this.m = (Map)Objects.requireNonNull(var1);
this.mutex = this;
}
SynchronizedMap(Map<K, V> var1, Object var2) {
this.m = var1;
this.mutex = var2;
}
public int size() {
Object var1 = this.mutex;
synchronized(this.mutex) {
return this.m.size();
}
}
public boolean isEmpty() {
Object var1 = this.mutex;
synchronized(this.mutex) {
return this.m.isEmpty();
}
}
....
}
static class SynchronizedList<E> extends Collections.SynchronizedCollection<E> implements List<E> {
private static final long serialVersionUID = -7754090372962971524L;
final List<E> list;
SynchronizedList(List<E> var1) {
super(var1);
this.list = var1;
}
SynchronizedList(List<E> var1, Object var2) {
super(var1, var2);
this.list = var1;
}
public boolean equals(Object var1) {
if (this == var1) {
return true;
} else {
Object var2 = this.mutex;
synchronized(this.mutex) {
return this.list.equals(var1);
}
}
}
public int hashCode() {
Object var1 = this.mutex;
synchronized(this.mutex) {
return this.list.hashCode();
}
}
public E get(int var1) {
Object var2 = this.mutex;
synchronized(this.mutex) {
return this.list.get(var1);
}
~~~
- Java
- Object
- 內部類
- 異常
- 注解
- 反射
- 靜態代理與動態代理
- 泛型
- 繼承
- JVM
- ClassLoader
- String
- 數據結構
- Java集合類
- ArrayList
- LinkedList
- HashSet
- TreeSet
- HashMap
- TreeMap
- HashTable
- 并發集合類
- Collections
- CopyOnWriteArrayList
- ConcurrentHashMap
- Android集合類
- SparseArray
- ArrayMap
- 算法
- 排序
- 常用算法
- LeetCode
- 二叉樹遍歷
- 劍指
- 數據結構、算法和數據操作
- 高質量的代碼
- 解決問題的思路
- 優化時間和空間效率
- 面試中的各項能力
- 算法心得
- 并發
- Thread
- 鎖
- java內存模型
- CAS
- 原子類Atomic
- volatile
- synchronized
- Object.wait-notify
- Lock
- Lock之AQS
- Lock子類
- 鎖小結
- 堵塞隊列
- 生產者消費者模型
- 線程池