博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读写锁ReadWriteLock
阅读量:3960 次
发布时间:2019-05-24

本文共 1397 字,大约阅读时间需要 4 分钟。

可以被多个线程同时读,写的时候只能被一个线程写

在这里插入图片描述

// 加锁的class MyCacheLock{
private volatile Map
map = 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); map.put(key,value); System.out.println(Thread.currentThread().getName()+"写入OK"); } catch (Exception e) {
e.printStackTrace(); } finally {
readWriteLock.writeLock().unlock();//释放写锁 } } / / 取,读,所有人都可以读! public void get(String key){
readWriteLock.readLock().lock(); try {
System.out.println(Thread.currentThread().getName()+"读取"+key); Object o = map.get(key); System.out.println(Thread.currentThread().getName()+"读取OK"); } catch (Exception e) {
e.printStackTrace(); } finally {
readWriteLock.readLock().unlock(); } }}public class ReadWriteLockDemo {
public static void main(String[] args) {
MyCache myCacheLock = new MyCacheLock(); // 写入 for (int i = 1; i <= 5 ; i++) {
final int temp = i; new Thread(()->{
myCacheLock .put(temp+"",temp+""); },String.valueOf(i)).start(); } // 读取 for (int i = 1; i <= 5 ; i++) {
final int temp = i; new Thread(()->{
myCacheLock .get(temp+""); },String.valueOf(i)).start(); } }}

转载地址:http://sohzi.baihongyu.com/

你可能感兴趣的文章
安装 docker-compose (实测可用,妈妈再也不用担心被墙了)
查看>>
docker下删除none的images
查看>>
Linux提权获取敏感信息方法
查看>>
Ubuntu 16.04开机A start job is running for Raise network interface(5min 4s)解决方法
查看>>
Ubuntu 16.04开机隐藏菜单缩短时间
查看>>
Ubuntu 更换国内源
查看>>
Ubuntu16.04下Docker pull connection refused 解决办法
查看>>
postgres基本操作(个人总结版)
查看>>
The AnimationClip 'Walk' used by the Animation component 'Pig' must be marked as Legacy.
查看>>
《Linux内核设计与实现》- Linux的进程
查看>>
inet_ntoa()
查看>>
POSIX消息队列mq_open问题
查看>>
两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];
查看>>
用户态切换到内核态的3种方式
查看>>
笔试常见的智力题(附答案)
查看>>
内核库函数
查看>>
Linux 系统内核空间与用户空间通信的实现与分析
查看>>
如何写好应用型学术论文
查看>>
如何查看进程的各种限制
查看>>
64位int类型用printf输出问题
查看>>