readwritemap.java

来自「java concurrency in practice 源码. JAVA」· Java 代码 · 共 104 行

JAVA
104
字号
package net.jcip.examples;import java.util.*;import java.util.concurrent.locks.*;/** * ReadWriteMap * <p/> * Wrapping a Map with a read-write lock * * @author Brian Goetz and Tim Peierls */public class ReadWriteMap <K,V> {    private final Map<K, V> map;    private final ReadWriteLock lock = new ReentrantReadWriteLock();    private final Lock r = lock.readLock();    private final Lock w = lock.writeLock();    public ReadWriteMap(Map<K, V> map) {        this.map = map;    }    public V put(K key, V value) {        w.lock();        try {            return map.put(key, value);        } finally {            w.unlock();        }    }    public V remove(Object key) {        w.lock();        try {            return map.remove(key);        } finally {            w.unlock();        }    }    public void putAll(Map<? extends K, ? extends V> m) {        w.lock();        try {            map.putAll(m);        } finally {            w.unlock();        }    }    public void clear() {        w.lock();        try {            map.clear();        } finally {            w.unlock();        }    }    public V get(Object key) {        r.lock();        try {            return map.get(key);        } finally {            r.unlock();        }    }    public int size() {        r.lock();        try {            return map.size();        } finally {            r.unlock();        }    }    public boolean isEmpty() {        r.lock();        try {            return map.isEmpty();        } finally {            r.unlock();        }    }    public boolean containsKey(Object key) {        r.lock();        try {            return map.containsKey(key);        } finally {            r.unlock();        }    }    public boolean containsValue(Object value) {        r.lock();        try {            return map.containsValue(value);        } finally {            r.unlock();        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?