唐僧喜欢小龙女

导航

读写锁

1、读写锁是啥

读写锁就是对Lock的细化

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.*;

/**
 *
 *  读写锁(也叫独占锁或者共享锁)
 *  写的时候是线程独占的,读的时候是共享的
写的时候只有一个线程在写不存在插队的情况,读的时候一个线程度,另外的线程可以插进来 * * */ public class ReadWriteLockDemo { public static void main(String[] args) { Mycache mycache = new Mycache(); for (int i = 1; i <= 5 ; i++) { final int t = i; new Thread(()->{ mycache.put(t+"",t+""); },String.valueOf(i)).start(); } for (int i = 2; i <= 40 ; i++) { final int t = i; new Thread(()->{ mycache.get(t+""); },String.valueOf(i)).start(); } } } class Mycache{ private volatile Map hashMap = new HashMap(); Lock lock = new ReentrantLock(); ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); public void put(String key,Object o){ readWriteLock.writeLock().lock(); try{ System.out.println(Thread.currentThread().getName()+"开始写入"+key); hashMap.put(key,o); System.out.println(Thread.currentThread().getName()+"写入完成"+key); }catch (Exception e){ }finally { readWriteLock.writeLock().unlock(); } } public void get(String key){ System.out.println(Thread.currentThread().getName()+"开始读取"+key); hashMap.get(key); System.out.println(Thread.currentThread().getName()+"读取完成"+key); } }

  

posted on 2021-05-21 17:40  与时具进&不忘初心  阅读(19)  评论(0编辑  收藏  举报