Java面试题:Synchronized和Lock的对比
Synchronized和Lock对比
语法层面
Synchronized是关键字,源码在jvm中,用c++语言实现
使用时,退出同步代码块时会自动释放
Lock是接口,源码由jdk提供,用java语言实现
使用时,需要手动调用unlock方法进行释放
功能层面
都属于悲观锁,具备基本的互斥,同步,锁重入功能
但Lock具备了额外的
公平锁
可中断
被打断会抛出一个InterruptedException,通过trycatch进行处理
lock.lockInterruptibly()
//获取可中断锁
lock.interrupt()
//中断锁
可超时
lock.tryLock(2,TimeUnit.SECONDS)
//获取可超时锁,获取成功返回true,失败返回false
//参数给(时间,时间单位)
lock.unlock()
//释放锁
多条件变量等功能
lock.lock();
Condition c1 = new Condition();
//创建条件c1
c1.await();
//c1条件等待
c1.signal();
//c1条件唤醒
c1.signalAll();
//c1条件全部唤醒
在ReentrantLock,ReentrantReadWriteLock(读写锁)等场景中都可以使用
性能层面
在没有竞争时,Synchronized做了很多优化(偏向锁,轻量级锁)
在竞争激烈时,Lock的实现会提供更好的性能
相关文章:
Java面试题:Synchronized和Lock的对比
Synchronized和Lock对比 语法层面 Synchronized是关键字,源码在jvm中,用c语言实现 使用时,退出同步代码块时会自动释放 Lock是接口,源码由jdk提供,用java语言实现 使用时,需要手动调用unlock方法进行释放 功能层面 都属于悲观锁,具备基本的互斥,同步,锁重入功能 但Lock…...
VPN方案和特点
VPN方案和特点 VPN,或者称为虚拟专用网络,是一种保护你的在线安全和隐私的技术。它可以创建一个加密的连接,使你的在线活动对其他人不可见。以下是一些常见的VPN协议和它们的特点: 开放VPN (OpenVPN):这是一种极为可…...
力扣HOT100 - 84. 柱状图中最大的矩形
解题思路: 单调栈 对于一个高度height[ i ],找左右两边均严格小于它的值。 class Solution {public int largestRectangleArea(int[] heights) {int n heights.length;int[] left new int[n];int[] right new int[n];Deque<Integer> mono_st…...
【吃透Java手写】3-SpringBoot-简易版-源码解析
【吃透Java手写】SpringBoot-简易版-源码解析 1 SpringbootDemo2 准备工作2.1 Springboot-my2.1.1 依赖2.1.2 SpringBootApplication2.1.3 SJBSpringApplication2.1.3.1 run方法 2.2 Springboot-user2.2.1 依赖2.2.2 UserController2.2.3 UserApplication 2.3 分析run方法的逻辑…...
maven mirrorOf的作用
在工作中遇到了一个问题导致依赖下载不了,最后发现是mirror的问题,决定好好去看一下mirror的配置,以及mirrorOf的作用,以前都是直接复制过来使用,看了之后才明白什么意思。 过程 如果你设置了镜像,镜像会匹…...
Centos7 安装 MySQL5.7 使用 RPM 方式
1 访问网站 https://downloads.mysql.com/archives/community/ 选择合适的版本,点击 Download。 2 上传下载好的 mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar 文件到 Centos7 机器,这里放到了 下载 目录。 3 解压 mysql-5.7.44-1.el7.x86_64.rpm-bundle.…...
代码随想录算法训练营day21 | 513.找树左下角的值、112. 路径总和、106.从中序与后序遍历序列构造二叉树
513.找树左下角的值 迭代法比较简单,层序遍历,找到最下面一层的第一个节点。题目已经说明节点数>1了 class Solution:def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:queue collections.deque()queue.append(root)result ro…...
微信小程序知识点归纳(一)
前言:适用于有一定基础的前端开发同学,完成从网页开发到小程序开发的知识转换。 先立框架,后砌墙壁 回顾:了解微信小程序开发流程-CSDN博客 初始页面结构,三部分pages、utils、配置,分别存放页面、工具类…...
wangEditor富文本编辑器与layui图片上传
记录:js 显示默认的wangEditor富文本编辑器内容和图片 <style>body {background-color: #ffffff;}.layui-form-select dl{z-index:100000;} </style> <div class"layui-form layuimini-form"><div class"layui-form-item"…...
爬虫学习:XPath提取网页数据
目录 一、安装XPath 二、XPath的基础语法 1.选取节点 三、使用XPath匹配数据 1.浏览器审查元素 2.具体实例 四、总结 一、安装XPath 控制台输入指令:pip install lxml 二、XPath的基础语法 XPath是一种在XML文档中查找信息的语言,可以使用它在HTM…...
【雅思写作】Vince9120雅思小作文笔记——P1 Intro(前言)
文章目录 链接P1 Intro(前言)字数限制题型综述(problem types overview)1. **柱状图(Bar Chart)** - 描述不同类别在某个或多个变量上的数据量比较。2. **线图(Line Graph)** - 展示…...
【面试干货】HTTPS 工作原理
【面试干货】HTTPS 工作原理 1、握手阶段(Handshake)2、密钥协商阶段3、加密通信阶段4、结束通信阶段 💖The Begin💖点点关注,收藏不迷路💖 HTTPS(HyperText Transfer Protocol Secureÿ…...
Cocos Creator 中编码规范 (6)
Cocos中命名规范 创建文件夹,全小写。创建脚本,首字母大写的驼峰形式。创建变量,首字母小写的驼峰形式 官方的编码规范...
Vue3:menu导航栏出现多个同一跳转路径的菜单处理
文章目录 需求整理实现思路实现过程 需求整理,实现思路 最近公司想将之前老的项目整理出来,因为这个老项目内容太杂什么页面都往里面塞,导致菜单特别多,公司就像将这个老的项目迁出来,这个旧的项目本来是后端PHP写的。…...
SAM轻量化应用Auto-SAM、Group-Mix SAM、RAP-SAM、STLM
1. Auto SAM(Auto-Prompting SAM for Mobile Friendly 3D Medical Image Segmentation) 1.1 面临问题 医学背景: (1)与自然图像相比,医学图像的尺寸更小,形状不规则,对比度更低。&…...
深度优化搜索DFS使用详解,看这篇就够了!!!
深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树和图的算法。在最坏的情况下,深度优先搜索的性能为O(VE),其中V是顶点数,E是边数。DFS常用于解决连通性问题、路径问题、生成树问题等。 ### D…...
Apache SeaTunnel 正式发布2.3.5版本,功能增强及多个Bug修复
经过两个月的筹备,我们在2.3.4版本基础上进行了新一轮的迭代,本次更新不仅修复了多个关键问题,还引入了若干重要功能增强和性能优化。 在此,我们先提前感谢社区成员的贡献和支持,如果你想升级最新的版本,快…...
interview_bak
flink内存管理 JVM 存在的几个问题: Java 对象存储密度低。一个只包含 boolean 属性的对象占用了16个字节内存:对象头占了8个,boolean 属性占了1个,对齐填充占了7个。而实际上只需要一个bit(1/8字节)就够了。Full GC 会极大地影响性能,尤其是为了处理更大数据而开了很大…...
layui 数据表格 自动定位新增行位置
由于数据表格新增行后没有到新增到当前位置 继续增加的需求: 因为自己是新增行后到最后一行的 所以 就定位到最后一行 并且 高亮 高亮颜色浅 可自行更改 整理了一下 可根据 情况 修改 // 初始化滚动条位置变量 let tableScroll {scrollTob: 0,scrollLeft: 0,…...
window10下安装ubuntu系统以及docker使用
window10下安装ubuntu系统以及docker使用 1. 启用适用于Linux的Windwos子系统2.下载Linux内核更新包3.将 WSL 2 设置为默认版本4.安装Ubuntu<br />直接去Microsoft store里面直接搜索Ubuntu进行安装。5.可能出现的问题1.win10启动ubuntu报错 参考的对象类型不支持尝试的操…...
5分钟搞定ECharts Tooltip显示问题:从滚动条到完美适配屏幕的保姆级教程
5分钟搞定ECharts Tooltip显示问题:从滚动条到完美适配屏幕的保姆级教程 第一次用ECharts做数据可视化时,Tooltip的显示问题简直让人抓狂——要么内容太长出现滚动条,要么直接冲出屏幕边界。作为过来人,我整理了这份实战指南&…...
极域电子教室突破技术:从系统控制到自主操作的攻防对抗
极域电子教室突破技术:从系统控制到自主操作的攻防对抗 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 一、核心痛点:极域电子教室的控制枷锁 在信息化教…...
从‘基’到‘坐标变换’:用Python和NumPy手把手理解线性空间的‘换地图’操作
从‘基’到‘坐标变换’:用Python和NumPy手把手理解线性空间的‘换地图’操作 想象一下,你正在使用导航软件规划路线。同一个地点,在高德地图和百度地图上显示的坐标可能完全不同——这就像线性代数中的基变换。本文将用Python代码和可视化手…...
当柔性车间遇上强化学习:从传统规则到DRL的调度进化史
柔性车间调度的智能革命:深度强化学习如何重塑制造业决策 在当今快节奏、定制化需求激增的制造业环境中,传统的生产调度方法正面临前所未有的挑战。想象一下,一个典型的电子设备制造车间:数百种不同规格的订单不断涌入,…...
3大核心功能打造专业级开源服装设计解决方案
3大核心功能打造专业级开源服装设计解决方案 【免费下载链接】Seamly2D Open source patternmaking software to democratize fashion. 项目地址: https://gitcode.com/gh_mirrors/se/Seamly2D Seamly2D作为一款开源服装制版软件,通过参数化设计、精确测量管…...
如何快速创建专业图表:Mermaid数据可视化的完整指南
如何快速创建专业图表:Mermaid数据可视化的完整指南 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器,支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图…...
颠覆传统数学输入:MathLive交互式公式编辑器三步实现跨平台数学表达
颠覆传统数学输入:MathLive交互式公式编辑器三步实现跨平台数学表达 【免费下载链接】mathlive A web component for easy math input 项目地址: https://gitcode.com/gh_mirrors/ma/mathlive 在数字化教育与科研领域,数学公式的编辑始终是制约效…...
Nomic-Embed-Text-V2-MoE实战:构建智能文档检索系统与MySQL集成
Nomic-Embed-Text-V2-MoE实战:构建智能文档检索系统与MySQL集成 1. 引言 想象一下,你所在的公司有成千上万份产品手册、技术文档和合同文件,它们散落在各个文件夹里,格式五花八门。当你想找一份关于“如何解决产品X在低温环境下…...
政务短信钓鱼攻击机理与防控研究 —— 以美国宾州 PennDOT 诈骗事件为例
摘要 2026 年 3 月 27 日,宾夕法尼亚州官方发布安全预警,提示公众警惕冒充 PennDOT(宾州交通局)的短信钓鱼诈骗。此类攻击以车辆管理、罚单缴费、证件状态异常为诱饵,通过仿冒政务身份诱导用户点击恶意链接,…...
华三M-LAG实战:从零构建高可用数据中心网络
1. 为什么数据中心需要M-LAG技术? 刚接手数据中心网络建设项目时,我最头疼的就是如何实现高可用性。传统方案要么成本太高,要么切换速度达不到要求。直到接触华三的M-LAG技术,才发现原来跨设备链路聚合可以这么玩。 M-LAG全称Mult…...
