当前位置: 首页 > 后端技术 > Java

ReadWriteLock

时间:2023-04-01 18:25:38 Java

ReadWriteLock读写锁,只有read和read不互斥,其他互斥。写了个小demo加深印象。publicclassMyChahe{privateMapmap=newHashMap<>();privateReadWriteLocklock=newReentrantReadWriteLock();publicvoidput(Stringkey,Objectvalue){try{lock.writeLock().lock();System.out.println("现在开始进行put操作----------");map.put(键,值);线程.睡眠(5000);System.out.println("把操作结束----------");}catch(Exceptione){e.printStackTrace();}finally{lock.writeLock().unlock();}}publicvoidget(Stringkey){try{lock.readLock().lock();System.out.println("现在开始进行get操作----------");对象值=map.get(key);System.out.println("get操作结束----------,value-->"+value);}catch(Exceptione){e.printStackTrace();}finally{lock.readLock().unlock();}}}publicclassLockTest{publicstaticvoidmain(String[]args)throwsInterruptedException{MyChahe缓存=newMyChahe();newThread(()->{cache.put("1","aaaaaaaaaa");}).start();线程.sleep(300);newThread(()->{cache.get("1");}).start();}}当一个线程获取写锁后,其他线程调用读相关操作,就没有办法获取读锁了。只有等待写锁被释放才能获得锁