• 技术文章 >java >java基础

    java读写锁是什么

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

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

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

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

    实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    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学习网