zoukankan      html  css  js  c++  java
  • 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();
    }
    }
  • 相关阅读:
    每日总结
    团队冲刺9
    团队冲刺8
    团队冲刺7
    团队冲刺6
    团队冲刺5
    团队冲刺4
    团对冲刺3
    团队冲刺2
    每日博客
  • 原文地址:https://www.cnblogs.com/shanbaoxin/p/11662190.html
Copyright © 2011-2022 走看看