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();
    }
    }
  • 相关阅读:
    Using the proxy page
    ArcGIS 帮助 10.1 几何服务
    【转】地图投影系列介绍(三)_ 地图投影
    最简单的闰年函数
    JSP的编码问题
    和苗波玩吉他英雄,还有诺拉斯战士
    倒底是用接口,还是继承类?
    收集的两个Winform三层结构的例子
    在vs.net 2005 中 像JBuilder,Eclipse那样格式化代码
    JSP比ASP好的几个地方
  • 原文地址:https://www.cnblogs.com/shanbaoxin/p/11662190.html
Copyright © 2011-2022 走看看