一、Lock接口 1. Java5之后,JDK新增了Lock接口,实现锁的功能,与synchronized关键字类似 2. 源码 二、ReentrantLock 1. 实现了Lock接口 2. 是synchronized的替代,ReentrantLock是Java语言层面实现的锁机制,synchro ...
分类:
其他好文 时间:
2019-11-01 09:52:17
阅读次数:
73
public class ReentrantReadWriteLockTest { private Map map = new HashMap(); public static ReentrantReadWriteLock readWriteLock = new ReentrantReadWrite... ...
分类:
其他好文 时间:
2019-10-30 13:44:42
阅读次数:
66
显式锁-Lock与ReadWriteLockJDK针对Lock的主要实现是ReentrantLock,ReadWriteLock实现是ReentrantReadWriteLock。本文主要介绍ReentrantLock。 ReentrantReadWriteLock两把锁共享一个等待队列,两把锁的状 ...
分类:
其他好文 时间:
2019-10-04 09:51:30
阅读次数:
66
一. 读写锁是怎么实现的? 继承AQS,然后通过将AQS中的state转化为二进制,分为高16位和低16位来区分。高16位表示读状态,低16位为写状态。 二. 解析表示方式(高低16位) 假设此时state是数值S a.写锁 在判断写锁时,通过 K=S&0X0000FFFF, 将高位全部抹掉,此时只 ...
分类:
其他好文 时间:
2019-09-30 21:41:49
阅读次数:
111
1.轻量级锁(Lock)与重量级锁(synchronized):都是可重入锁 2.可重入锁(递归锁):方法中嵌套方法,锁可传递 3.读写锁(ReentrantReadWriteLock)--读写分离 读锁(获取该值信息)和写锁(对该值操作) 4.乐观锁 本质没有锁,效率比较高、无阻塞、无等待、重试。 ...
分类:
其他好文 时间:
2019-09-15 14:14:55
阅读次数:
130
锁降级指的是写锁降级为读锁。 因为读锁与读锁之间不互斥,如果是写锁与读锁或者是写锁与写锁就会互斥,所以由写锁变为读锁就降级了。 如果当前线程拥有写锁,然后将其释放,最后再获取读锁,这种并不能称之为锁降级。 锁降级指的是把持住(当前拥有的)写锁,再获取到读锁,随后释放(先前有用的)写锁的过程。 下面给 ...
分类:
其他好文 时间:
2019-08-27 17:29:30
阅读次数:
77
这篇博客记录了Lock,ReentrantLock,ReentrantReadWriteLock类的使用以及其一些api: 码字不易~~另外《java多线程编程核心技术》这本书读着很爽 前言说明:之前为了解决多线程时的非线程安全问题,使用的是synchronized。接下来记录的是他的升级版本Ree ...
重点: 1、读锁共享 2、写锁互斥 3、读写锁互斥 锁降级:将写锁降级为读锁。(先获取写锁,再获取读锁,再释放写锁,最后释放读锁) 造成锁降级的原因:出于性能考虑,一般情况下,都将锁定的动作,精确到具体的语句块,在两个锁的语句块之间,有可能线程的交替执行,造成线程安全问题。 解决的方法: 1、将锁的 ...
分类:
其他好文 时间:
2019-08-17 00:43:26
阅读次数:
118
StampedLock是什么? StampedLock具有什么特性? StampedLock是否支持可重入? StampedLock与ReentrantReadWriteLock的对比? ...
分类:
编程语言 时间:
2019-06-24 22:37:27
阅读次数:
112
读写锁是什么?
读写锁具有哪些特性?
ReentrantReadWriteLock是怎么实现读写锁的?
如何使用ReentrantReadWriteLock实现高效安全的TreeMap?
分类:
编程语言 时间:
2019-06-14 09:19:38
阅读次数:
107