• 技术文章 >java >java基础

    java读写锁是什么

    小妮浅浅小妮浅浅2021-10-20 10:59:21原创335

    1、读写锁将一个资源(如文件)的访问分为两个锁,一个读写锁。

    2、因为读写锁,多个线程之间的读写操作才不会发生冲突。

    3、ReadWriteLock是读写锁,它是一个界面,RentrantReadWriteLock实现了这个界面。

    实例

    public class CacheDemo {
        private Map<String, Object> cache = new HashMap<>();
        private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
     
        public static void main(String[] args) {
     
     
        }
     
        public Object getData(String key) {
     
            Object value = null;
            //首先开启读锁,从缓存中去取
            readWriteLock.readLock().lock();
            try {
                value = cache.get(key);
                //如果缓存中没有释放读锁,上写锁
                if (value == null) {
                    //对应queryDB()
                    readWriteLock.readLock().unlock();
                    //读锁必须unlock之后才能获取写锁
                    readWriteLock.writeLock().lock();
                    try {
                        //对应queryDB()
                        value = queryDB();
                    } finally {
                        //释放写锁
                        readWriteLock.writeLock().unlock();
                    }
                    //然后再上读锁
                    readWriteLock.readLock().lock();
                }
            } finally {
                //最后释放读锁
                readWriteLock.readLock().unlock();
            }
            return value;
     
        }
     
        public Object queryDB() {
            return "aaaa";
        }
    }

    以上就是java读写锁的介绍,希望对大家有所帮助。更多Java学习指路:Java基础

    专题推荐:java 读写锁
    品易云
    上一篇:java读写锁的特性 下一篇:java非公平锁如何理解

    相关文章推荐

    • java类常量是什么• java强制类型转换的使用• java自增和自减运算符的介绍• java拼接字符串的使用• java中空串是什么• java方法的返回值介绍• java静态方法和实例方法的区别• java中hashCode()是什么• java阻塞队列的两种操作• java队列抛出异常的介绍• java线程执行的两种情况• java读写锁的特性

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网