java-锁-ReentrantReadWriteLock

时间:2020-09-27 15:57:46   收藏:0   阅读:39

对于"ReentrantReadWriteLock" 和reentrantLock的比较

talk is cheap , show me the code               

  public static void main(String[] args) {
        ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock();

        ReentrantReadWriteLock.WriteLock writeLock = reentrantReadWriteLock.writeLock();
        ReentrantReadWriteLock.ReadLock readLock = reentrantReadWriteLock.readLock();
        if (readLock.tryLock()) {
            readLock.unlock();
            try {
                writeLock.lock(); // 在读锁未释放情况下执行写锁加锁,会被一直阻塞,不会往下执行
                {
                    //执行相关写的操作
                }
                // 当写锁加锁成功后可以降级为读锁
                readLock.lock();
            } finally {
                // 释放写锁
                writeLock.unlock();
            }
        }
        {
            // 执行读操作
            try {

            } finally {
                // 保证所有的加锁和解锁都是成对存在
                // 如果读锁不释放,可能导致的结果为所有的读操作都不会有影响,但写操作会被一直阻塞
                readLock.unlock();
            }
        }

    }

 

      

原文:https://www.cnblogs.com/xingguoblog/p/13739195.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!