synchronized 和 ReentrantLock 的区别

news2024/11/25 18:42:07

🎈专栏链接:多线程相关知识详解

synchronized和ReentrantLock的 区别 = 缺点 + 优势

synchronized和ReentrantLock两者都是可重入锁

ReentrantLock的三个核心方法:

Ⅰ.lock(加锁)

Ⅱ.unlock(解锁)

Ⅲ.tryLock(尝试加锁)

import java.util.concurrent.locks.ReentrantLock;

public class Demo1 {
    public static void main(String[] args) {
        ReentrantLock locker = new ReentrantLock();
        //加锁
        locker.lock();
        //....
        //解锁
        locker.unlock();
    }
}

如果在ReentrantLock的加锁解锁中间发生了异常就有可能导致后面的解锁操作无法执行到(ReentrantLock的缺点),而使用synchronized就不用担心这个问题,因为只要出了代码块就一定执行解锁操作

虽然ReentrantLock有缺点,但是它有一些特定的功能是synchronized做不到的

ReentrantLock的3个优点:

1.tryLock 试试看能不能加上锁,试成功了,就加锁成功,试失败了,就放弃加锁,并且还可以指定加锁的等待超时时间(在开发过程中,"死等的策略"需要特别注意,tryLock就提供了应对的方法)

2.ReentrantLock 可以实现公平锁,它默认是非公平的,在构造的时候给它传入一个参数true就变公平锁了

ReentrantLock locker = new ReentrantLock(true);

3.synchronized搭配的是 wait/notify 来实现等待通知机制的,唤醒操作是随机唤醒一个等待的线程

   ReentrantLock 搭配的是 Condition类 实现的,唤醒操作是可以指定唤醒哪个等待通知的线程的

synchronized是java的关键字,底层是基于JVM实现的(通过C++实现的),而ReentrantLock是标准库中的一个类,底层是基于Java实现的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android并发编程里的线程原理

1.进程和线程的概念 抛开那些官方的概念,我们可以大致理解为:进程就是手机里运行的一个个应用,他们都是一个个的进程(当然,有些App是多进程的,这个先不谈)。线程则是进程中对应的一个任务的执行控制流。如果…

广播机制-案例

广播机制-案例 1.静态注册案例-接收开机广播 1.案例:接收开机的广播 创建自定义的BroadcastReceiver用于处理监听到的系统广播。//接收系统开机的广播事件 public class BootCompleteReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context co…

2023跨境出海指南:马来西亚网红营销白皮书

当前的东南亚市场可谓是是企业出海的大热门,马来西亚作为东南亚地区的第三大经济体,其发展形势也是一片大好。疫情出现后,马来西亚的娱乐和消费转移到线上,对社媒的依赖也催发了网红经济的发展。本文Nox聚星就和大家探讨一下&…

海康威视人脸识别设备对接(一)环境搭建

需要对接海康威视人脸识别设备,这里选择明眸门禁,还有其他的没研究过 打开海康威视开放平台 https://open.hikvision.com/ 选择开放体系,一直选择到设备集成SDK 这里我选择设备网络SDK 点击查看详情 选择对应的版本,我用笔记…

AD入门学习—原理图的绘制3

目录 2.4 CAN&24C02及DS18B20温度传感单元的绘制 2.5 USB单元的绘制 2.6 SD卡及TFT单元的绘制 2.7 NRF24L01单元的绘制 2.8 COM口及PS/2接口的绘制 2.9 DCDC电源输入单元的绘制 2.10 原理图的统一编号及编译检查 学习目录 2.4 CAN&24C02及DS18B20温度传感单元的绘制…

Vue基本指令

1、前端技术的发展(html、CSS、JavaScript) ​ (1)jQuery:是对JavaScript进行了封装,使得操作DOM、事件处理、动画处理、ajax交互变得非常简洁、方便。是JavaScript的 库。 ​ (2&#xff09…

Moonbeam与Wormhole的Relayer Engine之间的跨链互连合约

如果您不了解Moonbeam,用一句话简单概括来说Moonbeam是跨链通信的中心枢纽。像Axelar、LayerZero和Hyperlane等的协议允许不同EVM上的智能合约互相通信,为Web3 dApp解锁功能方面前所未见的规模。但就目前来说,上述的几个协议的智能合约通信仅…

计算机网络——数据报与虚电路

简介 本篇接上一篇数据交换的内容继续 分组交换其实包含数据报交换和虚电路交换 数据报方式:为网咯层提供外连接服务 虚电报:为网络层提供连接服务 无连接服务:不事先为分组传输确定传输的路径,每个分组独立确定传输路径&#x…

如何实现带动画的动态面包屑,来看看?

大家好,我是派大星,最近在自己手动搭建一个后台管理平台,将其命名为 “雷达行动 Radar-Solution” ,在开发的过程中对比了一下其他已经成型的后台解决方案,发现都存在一个共性,就是在Layout的头部都有一个面…

分布式理论之分布式事务

写在前面 我们知道,像MySQL的InnoDB存储引擎提供了事务的能力,严格遵守AICD的事务要求,但是在分布式环境中,一个请求会在多个服务实例存在多个事务,如购物,会有订单系统,支付系统,物…

springboot够用就好系列-1.自定义LengthJudge注解校验字段长度

类似NonNull注解标注在参数之上,表示对应的值不可以为空,利用java的元注解及注解处理器实现检查属性长度的功能。 目录 程序效果 实现过程 样例代码 参考资料 程序效果 截图1.用户名超长提示 检查登录时“用户名”、“密码”字段的长度,此…

安全智能分析 环境迁移

环境迁移 Platfor m Ops for AI 作为整合了 DataOps、MLOps、ModelOps 的复杂技术平台,在项目开发时仅使用一套系统无法支撑平台的稳定搭建,往往需要开发系统、集成测试系统、正式 环境系统在项目生命周期 中协作配合。将表、索引、并发程序、配置内容等…

新手想做短视频可以选择什么领域,这三个可以无脑尝试

大家好,我是蝶衣王的小编 对于小白来说,如果你想通过短视频来赚钱,你不能在流行的领域去做。因为坑不是你能接受的,而且有太多的同行,你的竞争优势没法显现出来。下面分享一下新手适合做的短视频领域​。 一、盘点类型…

海思嵌入式开发-001-基于Ubuntu20.04搭建开发环境

海思嵌入式开发-001-基于Ubuntu20.04搭建开发环境一、虚拟机安装ubuntu20.041、安装虚拟机VMware2、基于虚拟机安装ubuntu20.04二、开发环境配置1、参考资料2、问题汇总一、虚拟机安装ubuntu20.04 1、安装虚拟机VMware 主机配置为Windows 10系统,CPU为i7-8550U 4核…

虹科新闻|ATTO 宣布支持 Apple 最新操作系统 macOS® 13 Ventura

一、即时发布 近期,虹科的合作伙伴ATTO公司宣布支持Apple最新操作系统macOS13 Ventura,所有HK-ATTO适配器、软件和实用程序都已经过新操作系统的测试和验证。 ATTO 34年来为数据密集型计算环境提供网络、存储连接和基础架构解决方案的全球领导者&#…

一文读懂什么是低代码开发?

世界在应用程序上运行,商业世界也不例外。面对变化,企业过去依赖的传统应用程序开发流程可能不再有效。从头开始构建软件解决方案需要花费数月甚至数年的时间来规划、设计、测试和部署。当您的组织需要快速解决方案时,等待负担过重的开发人员…

真实世界的人工智能应用落地——OpenAI篇 ⛵

💡 作者:韩信子ShowMeAI 📘 深度学习实战系列:https://www.showmeai.tech/tutorials/42 📘 本文地址:https://www.showmeai.tech/article-detail/414 📢 声明:版权所有,转…

CVE-2018-1273漏洞复现

今天继续给大家介绍渗透测试相关知识,本文主要内容是CVE-2018-1273漏洞复现。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授…

Web3中文|未来的工作模式:VR头显、元宇宙和供应商协作

根据Meta最近发布的一份关于未来工作模式的报告,大约三分之一的美英劳动力在进行远程办公,因此企业必须重新定义工作方式和管理机制,并探索元宇宙和虚拟现实等创新领域。 报告称:“这将推动企业寻求更具创造性和创新性的方法来凝…

canal中间件集成springboot实战落地

目录 一、数据库开启相关权限功能: 二、canal 服务端配置启动:从官网下载程序和源码到本地环境 三、canal客户端配置启动: canal中间件集成springboot实战落地开始分享,这是目前互联网很常见的中间件,监听数据库变化…