Java中的读写锁ReentrantReadWriteLock

Java提供了读写锁。读写锁分为读锁和写锁两种,多个读锁不互斥,读锁与写锁互斥。
在java中读写锁接口java.util.concurrent.locks.ReadWriteLock的实现类ReentrantReadWriteLock来完成对读写锁的定义。

public class SeafCache {
    //map模拟读写操作
    private final Map<String,Object> cache=new HashMap<String,Object>();
    private final ReentrantReadWriteLock rwLock=new ReentrantReadWriteLock();
    private final Lock readLock=rwLock.readLock();//读锁
    private final Lock writeLock=rwLock.writeLock();//写锁
    //在读数据库的时候加读锁
    public Object get(String key){
        readLock.lock();
        try {
            return cache.get(key);
        }finally {
            readLock.unlock();
        }
    }
    //在写数据库的时候加写锁
    public Object put(String key,Object value){
        writeLock.lock();
        try {
            return cache.put(key, value);
        }finally {
            writeLock.unlock();
        }
    }
}
原创文章 41 获赞 11 访问量 1492

猜你喜欢

转载自blog.csdn.net/weixin_44038332/article/details/105282921