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

devtools/2024/9/25 20:30:58/

  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/devtools/117152.html

相关文章

网络丢包定位记录(二)

网卡驱动丢包 查看&#xff1a;ifconfig eth1/eth0 等接口 1.RX errors: 表示总的收包的错误数量&#xff0c;还包括too-long-frames错误&#xff0c;Ring Buffer 溢出错误&#xff0c;crc 校验错误&#xff0c;帧同步错误&#xff0c;fifo overruns 以及 missed pkg 等等。 …

使用Renesas R7FA8D1BH (Cortex®-M85)实现多功能UI

目录 概述 1 系统框架介绍 1.1 模块功能介绍 1.2 UI页面功能 2 软件框架结构实现 2.1 软件框架图 2.1.1 应用层API 2.1.2 硬件驱动层 2.1.3 MCU底层驱动 2.2 软件流程图 4 软件功能实现 4.1 状态机功能核心代码 4.2 页面功能函数 4.3 源代码文件 5 功能测试 5.1…

WebRTC编译后替换libwebrtc.aar时提示找不到libjingle_peerconnection_so.so库

Loading native library: jingle_peerconnection_so 问题原因&#xff1a;编译的时候只编译了armeabi-v7a的版本&#xff0c;但是应用程序是arm64-v8a&#xff0c;所以无法运行 解决方法&#xff1a;更新编译脚本&#xff0c;加上arm64-v8a进行编译 ./tools_webrtc/android/bu…

实现信创Linux桌面录制成MP4(源码,银河麒麟、统信UOS)

信创国产化已是大势所趋&#xff0c;在国产操作系统上的应用开发的需求越来越多&#xff0c;比如&#xff0c;有客户需要在银河麒麟和统信UOS上实现录制桌面生成一个mp4文件。那么这个要如何实现了&#xff1f; 一. 技术方案 要完成这些功能&#xff0c;具体来说&#xff0c;…

php医院预约挂号系统小程序 LW PPT源码调试讲解

第二章 开发技术与环境配置 2.1 Php语言简介 PHP&#xff0c;原名Hypertext Preprocessor。它是属于内嵌式语言&#xff0c;在服务器上执行嵌入HTML的脚本语言&#xff0c;有点像C语言的风格&#xff0c;运用的比较广泛。Hypertext Preprocessor混合了 Perl 、C、Java和自己创…

网络原理之IP协议(网络层)

目录 前言 什么是IP协议&#xff1f; IP协议的协议头格式 16位总长度&#xff08;字节数&#xff09; 16位标识、3位标志位和13位片偏移 8位生存时间 IP地址管理 1.动态分配IP 2.NAT机制&#xff08;网络地址转换&#xff09; NAT机制是如何工作的 NAT机制的优缺点…

每天五分钟玩转深度学习框架PyTorch:梯度下降之学习率衰减

本文重点 我们前面学习了优化器optim,然后学习了为神经网络不同层设置不同的学习率,本节课程我们讲解学习率衰减的方法,也就是说如何在训练过程中动态的修改学习率,本文介绍两种方法。本文是学习第6步(优化器) 为什么要进行学习率衰减 对于一阶梯度进行优化的方法而言,…

es的封装

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、类和接口介绍0.封装思想1.es的操作分类 二、创建索引1.成员变量2.构造函数2.添加字段3.发送请求4.创建索引总体代码 三.插入数据四.删除数据五.查询数据 前…