Java面试篇基础部分-ReentrantLock详解

embedded/2024/9/22 14:56:26/

  ReentrantLock 是继承了Lock接口,并且实现了再接口中定义的方法,属于一个可重入的独占锁。ReentrantLock 通过自定义队列同步器(Abstract Queued Synchroinzed,AQS)来实现锁的获取与释放。
在这里插入图片描述
  那么什么是独占锁呢?独占锁就是指这个锁在同一时刻只能被一个线程所获取到,如果其他线程想要获取到这个锁,则只能在同步队列中等待;而锁的可重入是指同一个线程对同一个资源能够执行多次加锁操作。

  ReentrantLock 支持公平锁与非公平锁的实现。也就是说线程对于锁竞争的机制是相对公平的,而非公平是说,线程获取锁的机制是不公平的,这里有两个概念需要注意,一个是竞争机制,一个是获取机制。

  ReentrantLock 提供了Synchroinzed对锁的操作,还提供了例如可响应中断锁、可轮询锁请求、定时锁等方式来避免在操作过程中出现死锁。

ReentrantLock的用法

  ReentrantLock 对于锁的操作是有明显的操作过程,例如什么时候进行加锁、什么时候对锁进行释放。这些操作都是在开发者手中可以控制的。

java">public class ReenterLockDemo implements Runnable {// 定义一个 ReentrantLock 锁public static ReentrantLock lock = new ReentrantLock();public static int i =0;@Overridepublic void run() {for (int j = 0; j < 10; j++) {lock.lock();//进行加锁操作// lock.lock(); //锁的可重入try{i++;}finally {lock.unlock();// 释放锁// lock.unlock();//可重入锁}}}public static void main(String[] args) throws InterruptedException {ReenterLockDemo reenterLockDemo = new ReenterLockDemo();Thread t1 = new Thread

http://www.ppmy.cn/embedded/115091.html

相关文章

大数据新视界 --大数据大厂之探索ES:大数据时代的高效搜索引擎实战攻略

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

vscode搭建ros开发环境问题记录(更新...)

文章目录 vscode 不能自动补全方法一&#xff1a;方法二&#xff1a; 开发环境&#xff1a; vmware 15.7 ubuntu 20.04 ros noetic vscode 不能自动补全 方法一&#xff1a; 这里将头文件已经正确包含到c_cpp_properties.json中代码中仍然不能自动补全&#xff0c; 将C_CPP插…

mysql学习教程,从入门到精通,SQL DISTINCT 子句 (16)

1、SQL DISTINCT 子句 SQL 的 DISTINCT 子句是一个强大的工具&#xff0c;用于在查询结果中消除重复的行&#xff0c;只保留唯一的数据记录。当处理数据库中的数据时&#xff0c;经常会遇到同一列或多列中存在重复值的情况。DISTINCT 子句可以帮助我们专注于唯一的值&#xff…

oracle 多表查询

3.6多表查询 当查询的数据并不是来源一个表时&#xff0c;需要使用多表连接操作完成查询。多表连接查询通过表之间的关联字段&#xff0c;一次查询出多个表的数据。 3.6.1等值连接 等值连接也称为简单连接(Simple Joins)或者内连接(Inner Join)。通过等号来判断连接条件中的数据…

【数据结构】排序算法---计数排序

文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaGo 结语 1. 定义 计数排序又称为鸽巢原理&#xff0c;是对哈希直接定址法的变形应用。计数排序不是基于比较的排序算法&#xff0c;其核心在于将输入的数据值转化为键存储在额外开辟的数组…

TryHackMe 第3天 | Pre Security (二)

该学习路径讲解了网络安全入门的必备技术知识&#xff0c;比如计算机网络、网络协议、Linux命令、Windows设置等内容。上一篇中简短介绍了计算机网络相关的知识&#xff0c;本篇博客将记录 网络协议 部分。 How the web works? DNS in detail DNS (Domain name system&…

Debian 12上安装google chrome

当前系统&#xff1a;Debian 12.7 昨天在Debian 12.7上安装Google Chrome时&#xff0c;可能由于网络原因&#xff0c;导入公钥始终失败。 导致无法正常使用命令#apt install google-chrome-stable来安装google chrome; 解决办法&#xff1a; Step1.下载当前google chrome稳…

实战讲稿:Spring Boot整合MyBatis

文章目录 实战讲稿&#xff1a;Spring Boot整合MyBatis课程目标课程内容1. 创建员工映射器接口1.1 创建子包1.2 创建接口 2. 测试员工映射器接口2.1 自动装配员工映射器2.2 测试按标识符查询员工方法2.3 测试查询全部员工方法2.4 测试插入员工方法2.5 测试更新员工方法2.6 测试…