Java -- 读写锁

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lhc2207221755/article/details/83591970

对于读多写少的场景,我们此时应该允许读锁的多次重入,提高读操作的并发性,在这种情况下,我们将读写锁分离。

 /**
     * 线程安全的local cache demo
     */
    class LocalCache {
        private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
        private Lock writeLock = lock.writeLock();
        private Lock readLock = lock.readLock();

        private Map<String, String> data = new HashMap<>();

        public String get(String key) {
            readLock.lock();
            try {
                if (data.containsKey(key)) {
                    return data.get(key);
                }
                return "";
            } finally {
                readLock.unlock();
            }
        }

        public void set(String key, String value) {
            writeLock.lock();
            try {
                data.put(key, value);
            } finally {
                writeLock.unlock();
            }
        }

        public void clear() {
            writeLock.lock();
            try {
                data.clear();
            } finally {
                writeLock.unlock();
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/lhc2207221755/article/details/83591970