美文网首页
ReadWriteLock使用记录

ReadWriteLock使用记录

作者: arkliu | 来源:发表于2022-12-15 09:13 被阅读0次
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

public class ReadWriteLockTest {

    public static void main(String[] args) {
        MyCache myCache = new MyCache();
        for (int i = 0; i < 5; i++) {
            final int tmp = i;
            new Thread(()->{
                myCache.write(""+tmp, tmp);
            },"线程"+i).start();
        }
        
        for (int i = 0; i < 5; i++) {
            final int tmp = i;
            new Thread(()->{
                myCache.read(""+tmp);
            },"线程"+i).start();
        }
    }
}

class MyCache {
    private Map<String, Object>cache = new HashMap<String, Object>();
    // 创建读写锁
    private ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); 
    
    public void write(String key, Object value) {
        readWriteLock.writeLock().lock(); // 写锁lock
        try {
            
            System.out.println(Thread.currentThread().getName()+"正在写入"+key);
            cache.put(key, value);
            System.out.println(Thread.currentThread().getName()+"写入"+key+"完成");
        } catch (Exception e) {
        } finally {
            readWriteLock.writeLock().unlock(); //写锁unlock
        }
    }
    
    public Object read(String key) {
        Object temp = null;
        readWriteLock.readLock().lock();// 读锁lock
        try {
            System.out.println(Thread.currentThread().getName()+"正在读取"+key);
             cache.get(key);
            System.out.println(Thread.currentThread().getName()+"读取"+key+"完成");
        } catch (Exception e) {
        } finally {
            readWriteLock.readLock().unlock(); ////读锁unlock
        }
        return temp;
    }
}

相关文章

  • 读写锁实现

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

  • 当被面试官问到:JUC并发编程——读写锁 ReadWriteLo

    1、ReadWriteLock 简介 ReadWriteLock 在java.util.concurrent.lo...

  • 读写锁 ReadWriteLock

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

  • 锁性能提升——ReadWriteLock

    这篇文章主要记录下ReadWriteLock的实现原理与用处,ReentrantLock可以实现线程安全,但是它的...

  • 读写锁

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

  • ReadWriteLock

    其实就是ReadWriteLock 下面有个sync 里面又声明了 ReadLock 和writeLock 公用一...

  • ReadWriteLock

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

  • ReadWriteLock

    ReadWriteLock 适用于读多写少的场景,针对读多写少这种并发场景,Java SDK并发包提供了读写锁——...

  • ReadWriteLock

  • ReadWriteLock

    面试的高频问题读锁 - 共享锁写锁 - 排它锁 执行结果:原则上前18个线程1s完成read over!read ...

网友评论

      本文标题:ReadWriteLock使用记录

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