Java多线程(ReentrantReadWriteLock类)

类ReentrantLock具有完全互斥的效果,即同一时间只有一个线程在执行ReentrantLock()方法后面的任务。这样做虽然保证了实例变量的线程安全性,但效率低下。通过ReentrantReadWriteLock类可以在某些不需要操作实例变量的方法中,完全可以使用读写锁(ReentrantReadWriteLock)来提升效率。

读写锁表示有两个锁,一个是读操作的锁,也称共享锁;一个是写操作的锁,也叫排它锁。也就是多个读锁之间不互斥,读锁与写锁互斥,写锁与写锁互斥。

读读共享

这里写图片描述
这里写图片描述

从控制台中打印的时间来看,两个线程几乎同时进入lock()方法后面的代码。说明在此使用了lock.readLock()读锁可以提高程序运行效率,允许多个线程同时执行lock()方法后面的代码。

写写互斥

这里写图片描述
这里写图片描述

使用写锁writeLock()的效果就是同一时间只允许一个线程执行lock()方法后面的代码

读写互斥

这里写图片描述
这里写图片描述

只要出现写锁,就是互斥的。
“读写”,”写读”和”写写”都是互斥的;而”读读”是异步的,非互斥的。

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值