美文网首页
ReadWriteLock读写锁

ReadWriteLock读写锁

作者: 刘彦青 | 来源:发表于2019-10-16 23:59 被阅读0次

读写锁,分场景优化,提升性能。

读写锁遵守的基本原则:

  1. 允许多个线程同时读共享变量。
  2. 只允许一个线程写共享变量。
  3. 如果一个写线程正在执行写操作,此时禁止多线程读共享变量。
  4. 读锁与写锁是互斥的;写锁与写锁也是互斥的。

读写锁适用于读多写少的场景。

读写锁与互斥锁的区别:读写锁运行多个线程同时读共享变量。

ReadWriteLock 是一个接口,ReentrantReadWriteLock可重入读写锁是他的实现类。

读写锁实例:

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

/**
 * @Description:
 * @Author: LYQ
 * @Date: 2019/9/10 11:12
 * @Version: V1.0
 **/
public class Cache<K,V> {
    final Map<K,V> m = new HashMap<>();
    final ReadWriteLock rwl = new ReentrantReadWriteLock();
    //读锁
    final Lock r =  rwl.readLock();
    //写锁
    final Lock w = rwl.writeLock();

    /**
     * 读缓存
     * @param key
     * @return
     */
    V get(K key){
        //获取读锁
        r.lock();
        try {
            return  m.get(key);
        }finally {
            r.unlock();
        }
    }

    /**
     * 写缓存
     * @param key
     * @param value
     * @return
     */
    V put(K key,V value){
         w.lock();
         try{
             return m.put(key,value);
         }finally {
             w.unlock();
         }
    }

}

锁的升级与降级

锁升级:读锁->写锁; 先获取读锁,然后升级为写锁。

锁降级:写锁->读锁;先获取写锁,人后升级为读锁。

ReadWriteLock支持锁的降级,不支持升级。

由读锁变写锁需要先把读锁释放掉再获取写锁,由写锁变读锁无需释放写锁。


**** 码字不易如果对你有帮助请给个关注****

**** 爱技术爱生活 QQ群: 894109590****

相关文章

  • ReadWriteLock读写锁

    1、引入ReadWriteLock读写锁 ReadWriteLock是JDK5中提供的读写分离锁。读写分离锁可以有...

  • java初入多线程9

    ReadWriteLock 多写锁 ReadWriteLock 是JDK5中提供的读写分离锁,读写分离可以有效的帮...

  • 读写锁实现

    读写锁 ReentrantReadWriteLock可重入读写锁(实现ReadWriteLock接口) 使用:Re...

  • ReadWriteLock

    ReadWriteLock 从这一节开始介绍锁里面的最后一个工具:读写锁(ReadWriteLock)。 Reen...

  • 17.读写锁ReentrantWriteReadLock

    读写锁ReentrantWriteReadLock,基于AQS的锁机制,实现ReadWriteLock接口。内部有...

  • 基于CAS的一些锁(5)- ReadWriteLock

    ReadWriteLock 读写锁。读写锁的概念其实就是共享锁和排他锁,读锁就是共享锁,写锁就是排他锁。 如何理解...

  • 读写锁

    今天来说说Java 的读写锁-ReadWriteLock,ReadWriteLock是一个接口,实现类是Reent...

  • JUC(九) -ReadWriteLock 读写锁

    9. ReadWriteLock 读写锁 ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个...

  • ReadWriteLock读写锁

    读写锁,分场景优化,提升性能。 读写锁遵守的基本原则: 允许多个线程同时读共享变量。 只允许一个线程写共享变量。 ...

  • 读写锁 ReadWriteLock

    RelaxHeart网 - Tec博客: 我的更多文章 ReadWriteLock ReadWriteLock是J...

网友评论

      本文标题:ReadWriteLock读写锁

      本文链接:https://www.haomeiwen.com/subject/kjdbuctx.html