1. 介绍 本文我们继续探究使用AQS的子类ReentrantReadWriteLock(读写锁)。老规矩,先贴一下类图 ReentrantReadWriteLock这个类包含读锁和写锁,这两种锁都存在是否公平的概念,这个后面会细讲。 此类跟ReentrantLock类似,有以下几种性质: 可选的公 ...
分类:
编程语言 时间:
2021-06-02 16:39:51
阅读次数:
0
公平锁,非公平锁 公平锁:非常公平,不能插队,必须先来后到 //参数写为true,就表示公平锁(不写默认就是非公平锁) public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync(); } 非 ...
分类:
其他好文 时间:
2021-05-04 15:15:22
阅读次数:
0
package com.atguigu.boot.com.atguigu; import java.io.IOException; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import ...
分类:
其他好文 时间:
2021-05-03 11:52:44
阅读次数:
0
一、释放锁 1.void unlock()方法 尝试释放锁,如果当前线程持有锁,则调用该方法会让该线程对该线程持有的AQS状态值减1,如果减去1后当前状态值为0,则当前线程会释放该锁,否则仅仅减去1而已,如果当前线程没有持有该锁而调用了该方法就会抛出IllegalMonitorStateExcept ...
分类:
编程语言 时间:
2021-04-16 12:19:27
阅读次数:
0
ReentrantLock是可重入锁,并且可以实现公平锁。Sychronized是可重入锁、非公平锁。 话不多说,上demo: 1 package com.example.demo.util; 2 3 import java.util.concurrent.locks.ReentrantLock; ...
分类:
其他好文 时间:
2021-04-12 12:54:59
阅读次数:
0
1:公平锁和非公平锁 1.1 流程图 1.2 源码分析 ? 锁使用 final Lock lock = new ReentrantLock(); new Thread(()->{ lock.lock(); try { System.out.println(" "); Thread.sleep(100 ...
分类:
其他好文 时间:
2021-04-07 11:23:49
阅读次数:
0
@ 1 介绍 前置知识,可以看AQS(一)独占锁(基于JDK 8) ReentrantLock 是一个可重入的独占锁。 在独占模式中,isHeldExclusively 为 true 表示是对当前线程加锁,false 表示未加锁或者对其他线程加锁。 加锁状态由 state 标识,如果为0,则说明未加 ...
分类:
其他好文 时间:
2021-04-02 13:21:20
阅读次数:
0
1.ReentrantLock 给类文件加锁,实现类似synchronized(class)的功能 核心是类文件中,使用static修饰的reentrantLock对象 public class SourceCache { public static final Lock reentrantLock ...
分类:
其他好文 时间:
2021-03-10 13:38:38
阅读次数:
0
相对于 synchronized 它具备如下特点 可中断 可以设置超时时间 可以设置为公平锁 支持多个条件变量,即对与不满足条件的线程可以放到不同的集合中等待 与 synchronized 一样,都支持可重入 基本语法 // 获取锁 reentrantLock.lock(); try { // 临界 ...
分类:
其他好文 时间:
2021-03-09 13:42:27
阅读次数:
0
1.reentrantLock的含义 2.它实现了Lock接口 ...
分类:
其他好文 时间:
2021-03-04 13:22:22
阅读次数:
0