据我所知,没有可用的“转移地图”。尽管从理论上讲创建一个并不太困难。
public class TransferMap<K,V> implements Map<K,V>{ @GuardedBy("lock") private final HashMap<K,V> backingMap = new HashMap<K,V>(); private final Object lock = new Object(); public V getAndWait(Object key){ synchronized(lock){ V value = null; do{ value = backingMap.get(key); if(value == null) lock.wait(); }while(value == null); } return value; } public V put(K key, V value){ synchronized(lock){ V value = backingMap.put(key,value); lock.notifyAll(); } return value; } }
此类中有明显的排除项。更不用说锁粗化了;不用说它的性能不好,但是您应该了解发生了什么
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)