• ReadWriteLock使用方法


      /**
    * 多个线程同时读一个资源类没有任何问题,所以为了满足并发量,读取共享资源
    * 应该同时进行。
    * 但是,如果有一个线程想去写共享资源来,就不应该再有其它线程可以对该资源进行读或者写
    * 小结:
    * 读—读能共存
    * 读写不能共存
    * 写写不能共存
    */
    public static void main(String[] args) {

    Mycache mycache=new Mycache();

    for(int i=0;i<=5;i++){
    final int t=i;
    new Thread(()->{
    mycache.put(Thread.currentThread().getName(),t+"");
    },String.valueOf(i)).start();
    }
    for(int i=0;i<=5;i++){
    new Thread(()->{
    mycache.get(Thread.currentThread().getName());
    },String.valueOf(i)).start();
    }
    }
    }
    class Mycache{
    private volatile HashMap<String,Object> hashMap=new HashMap<>();
    private ReadWriteLock readWriteLock=new ReentrantReadWriteLock();
    public void put(String key, Object value){
    readWriteLock.writeLock().lock();
    try{
    System.out.println(Thread.currentThread().getName()+" 写入数据"+key);
    hashMap.put(key,value);
    System.out.println(Thread.currentThread().getName()+" 写入完成");
    }catch (Exception e){

    }finally {
    readWriteLock.writeLock().unlock();
    }
    }
    public void get(String key){
    readWriteLock.readLock().lock();
    try{
    System.out.println(Thread.currentThread().getName()+" 读取数据"+key);
    hashMap.get(key);
    System.out.println(Thread.currentThread().getName()+" 读取完成");
    }catch (Exception e){
    }finally {
    readWriteLock.readLock().unlock();
    }
    }
  • 相关阅读:
    Git

    学而不记则徒劳无功
    Redis基础
    哈希表
    第一个Python程序
    Python 环境搭建 基于 Windows
    执行数据库的插入操作 insert
    Eclipse连接到My sql数据库的操作总结/配置数据库驱动
    数据库 (一)
  • 原文地址:https://www.cnblogs.com/shanbaoxin/p/11662190.html
Copyright © 2020-2023  润新知