首页 > 其他分享 >sychronized和ReentrantLock对比

sychronized和ReentrantLock对比

时间:2024-03-27 16:33:07浏览次数:19  
标签:synchronized 并发 ReentrantLock 阻塞 获取 sychronized 级别 对比

共同点

①都用于多线程对共享对象的访问。

②都是可重入锁。

③都保证了可见性和互斥性。

不同点

①ReentrantLock显示获取和释放锁;synchronized隐式获取和释放锁。

②Reentrant可响应中断、可轮询,为处理锁提供了更强的灵活性。

③ReentrantLock是API级别的,synchronized是JVM级别的。

④ReentrantLock可以定义公平锁,可以通过Condition绑定多个条件。

⑤二者的底层实现不一样:synchronized是同步阻塞,采用的是悲观并发策略;ReentrantLock是同步非阻塞,采用的是乐观并发策略。

⑥ReentrantLock是一个接口;synchronized是java中的关键字,是由内置语言实现的。

⑦通过ReentrantLock可以知道是否成功获取锁(isLock方法);而synchronized则无从得知。

⑧ReentrantLock可以通过分别定义读写锁提高多个线程读操作的效率。

标签:synchronized,并发,ReentrantLock,阻塞,获取,sychronized,级别,对比
From: https://blog.csdn.net/ChristopherI/article/details/137081190

相关文章

  • ReentrantLock重入锁
    ​一,重入锁定义重入锁,顾名思义,就是支持重新进入的锁,表示这个锁能够支持一个线程对资源重复加锁。如果一个线程已经拿到了锁,那么他需要再次获取锁的时候不会被该锁阻塞。举个例子,publicsynchronizedvoidtest(){dosomething...test2();}publicsynchronizedvoid......
  • 对比学习到底在学什么?
    对比学习(ContrastiveLearning)是一种自监督学习方法,它的核心目标是学习数据的表示(representation),使得相似的数据点在表示空间中靠近,而不相似的数据点在表示空间中远离。这种方法不依赖于标签数据,而是通过比较数据点之间的相似性和差异性来学习。在对比学习中,模型被训练来识......
  • C# 对比图片a里面是否包含图片b
      首先本人也是查询了很多的资料,各大平台的代码也查询过了,然后以及某d的商品图片api、=,相似图片api,相同图片api也对接了并没有得到一个很满意的接口,后来自己查询了相关代码以及自己的改动终于写出来了!!!首先使用图像处理库:EmguCV图像处理库来进行图像匹配和识别。图像匹......
  • 【MATLAB源码-第15期】基于matlab的MSK的理论误码率与实际误码率BER对比仿真,采用差分
    操作环境:MATLAB2022a1、算法描述在数字调制中,最小频移键控(Minimum-ShiftKeying,缩写:MSK)是一种连续相位调制的频移键控方式,在1950年代末和1960年代产生。[1]与偏移四相相移键控(OQPSK)类似,MSK同样将正交路基带信号相对于同相路基带信号延时符号间隔的一半,从而消除了已调信号......
  • Oracle与MySQL的差异和对比
    Oracle与MySQL的差异和对比:配套hands-on参考脚本。方便客户针对培训课件内容进行动手实践,加强理解。-----------------------------------主题:Oracle与MySQL的差异和对比--一、MySQL的基础特性--二、重要特性差异对比--三、性能对比和优化技巧--------------......
  • Flink: Function And Rich Function , 对比 Function ,Rich functions还提供了这些方法:o
    Flink:FunctionAndRichFunction,对比Function,Richfunctions还提供了这些方法:open、close、getRuntimeContext和setRuntimeContext序言    了解了Flink提供的算子,那我们就可以自定义算子了.自定义算子的目的是为了更加灵活的处理我们的业务数据,并将满足条件......
  • Git和SVN的对比
    差异安全性SVN:较差,定期备份,并且是整个SVN都得备份。Git:较高,每个开发者的本地就是一套完整版本库,记录着版本库的所有信息。 权限管理SVN:SVN的权限管理相当严格,可以按组、个人针对某个子目录的权限控制,每个目录下都会有个.SVN的隐藏文件。Git:Git没有严格的权限管理控制,只有账......
  • 连接未来:电口模块与PON模块的全面对比
    在探索电口模块和PON模块的区别时,我们不仅要考虑它们的技术规格和应用场景,还要理解它们在现代网络通信中的独特地位。本文将详细分析电口模块的特点,并与PON模块进行对比,以突出电口模块在网络通信中的重要性。电口模块:局域网的高效连接者电口模块,也称为电气接口模块,是网络设备......
  • 【MATLAB源码-第13期】基于matlab的4ASK的误码率BER和误符号率SER理论和实际对比仿真
    操作环境:MATLAB2022a1、算法描述"4ASK"是一种数字调制技术,代表4级振幅移移键控(4-LevelAmplitudeShiftKeying)调制。它是一种数字通信中常用的调制方式之一,用于将数字信号转换为模拟信号以便传输,或者将模拟信号转换为数字信号以便处理。在4ASK调制中,每个数字比特被映射......
  • 5个主流跨端框架及区别对比
    最近前端届多端框架频出,相信很多有代码多端运行需求的开发者都会产生一些疑惑:这些框架都有什么优缺点?到底应该用哪个?作为Taro开发团队一员,笔者想在本文尽量站在一个客观公正的角度去评价各个框架的选型和优劣。但宥于利益相关,本文的观点很可能是带有偏向性的,大家可以带着批判......