Java中ReentrantLock的概念深入理解

news/2024/11/9 5:17:37/

ReentrantLock和Synchronized的区别

  • 核心区别

ReentrantLock是一个类,Synchronized是Java中的一个关键字。
两者都是JVM层面实现互斥锁的方式
在这里插入图片描述

  • 效率区别

线程竞争激烈推荐使用ReentrantLock去实现,不存在锁竞争观念;
Synchronized是存在锁升级,但是并不存在锁降级

  • 底层实现区别

这里是引用
ReentrantLock是基于AQS实现
Synchronized是基于ObjectMonitor,c++来实现的

  • 功能性的区别

ReentrantLock的功能比Synchronized更加全面
ReentrantLock能支持公平锁和非公平锁;也能支持指定等待资源的时间

/*** @author 舒一笑* @date 2023/5/28*/
public class Test16 {ReentrantLock lock = new ReentrantLock(false);//非公平锁ReentrantLock lock2 = new ReentrantLock(true);//公平锁public static synchronized void main(String[] args) {}
}

什么是AQS

AQSz值的便是下面这个抽象类,他是JUC包下的基类。JUC下很多内容都是基于AQS去实现的部分功能,比如ReentrantLock,ThreadPoolExecutor,阻塞队列,CountDownLatch,Semaphore,CyclicBarrier等等。

在这里插入图片描述

AQS的特点

  • AQS中提供了一个由volatile修饰的,采用CAS方式修改的int类型的static变量。
    在这里插入图片描述
  • AQS维护了一个由head、tail、并且每个节点都是Node对象的双向链表
    在这里插入图片描述

结构的示意图

在这里插入图片描述


http://www.ppmy.cn/news/99751.html

相关文章

2023商家外卖数据

商家列表 外卖商品销量 shop_channel varchar(20) DEFAULT NULL, shop_system varchar(20) DEFAULT NULL, shop_system_no varchar(50) DEFAULT NULL, shop_platform varchar(20) DEFAULT NULL, shop_id varchar(50) NOT NULL, shop_id_str varchar(50) NO…

60题学会动态规划系列:动态规划算法第一讲

坚持就是胜利 - - 文章目录 1.第N个泰波那切数 2.三步问题 3.使用最小花费爬楼梯 4.解码方法 1.第N个泰波那切数 力扣链接:力扣 泰波那契序列 Tn 定义如下: T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2 给你整数 n&#xff0c…

C# | 凸包算法之Graham,快速找到一组点最外侧的凸多边形

C#实现凸包算法之Graham 文章目录 C#实现凸包算法之Graham前言示例代码实现思路测试结果结束语 前言 这篇关于凸包算法的文章,本文使用C#和Graham算法来实现凸包算法。 首先消除两个最基本的问题: 什么是凸包呢? 凸包是一个包围一组点的凸多…

vision transformer的计算复杂度

文章目录 Vision transformerSwin transformerConvolutional vision Transformer Vision transformer 假设每个图像有 h ∗ w h*w h∗w 个patch,维度是 C C C 输入的图像 X X X ( 大小为 h w ∗ C hw* C hw∗C ),和三个系数矩阵相乘 ( 大小为 C ∗…

监控摄像头是如何追踪的?

自动跟踪安全摄像头的概述和一些最佳建议 自动跟踪安全摄像头旨在自动检测和跟踪移动目标。这些相机可以使用图像识别来识别移动目标,有些甚至可以识别人、车辆和面部。 自动跟踪安全摄像头有利于安全目的,因为它们提供了一种快速有效的方法来监控移动目…

Linux常见指令-2

我们本期继续学习Linux基本指令,没有看过第一期的小伙伴建议先看第一期 (4条消息) Linux常见指令-1_KLZUQ的博客-CSDN博客 目录 15.时间相关指令 16.cal指令 17.find指令 18.grep指令 19.zip/unzip指令 20.tar指令 21.bc指令 22.uname –r指令 22.重要的几…

Ubuntu系统下软件的安装

Ubuntu系统下软件的安装 安装chrome浏览器Ubuntu 16下安装spyder3安装Teamviewer安装搜狗输入法WPS设置解决WPS启动提示字体未安装错误WPS切换显示语言WPS不能输入中文WPS文字WPS表格WPS演示修改完后保存,打开相应的程序切换输入法就可以输入中文了。安装赛睿霜冻之蓝v2驱动vi…

福福的jsp期末考试

目录 选择判断 大题 选择判断 1. 下面关于标记的说法不正确的是()。 (1.0分) A. 书写标记的时候,英文字母的大、小写或混合使用大小写都是允许的。 B. HTML对属性名称的排列顺序没有特别的要求。 C. 标记内可以包含一些属性,属性…