首页 > 其他分享 >锁的划分 Synchronized ReentrantLock区别

锁的划分 Synchronized ReentrantLock区别

时间:2023-06-23 10:33:47浏览次数:44  
标签:事务 Synchronized synchronized ReentrantLock 划分 级别 Serializable 隔离

共享锁

多个事务的读操作可以同时进行,互不阻塞,但某个事务持有共享锁,其他事务不允许修改

如readWriteTrantLock就是共享锁

排他锁

当前持有锁的事务没有完成前,其他事务读、写都会阻塞。这样就能确保在给定时间内,只有一个事务能执行写入

如ReentrantLock、就是排他锁

 

在非Serializable隔离级别下,查询不加锁。

在Serializable隔离级别下,查询加共享锁。

任意隔离级别下增删改加排他锁。正是利用了这种锁机制,数据库保证了并发的读不隔离,并发的写一定隔离,并发的读写在某一方或多方为Serializable的级别时,实现串行化,保证完全可靠

 

Synchronized vs Lock

1. 修饰范围

synchronized可以修饰代码块、方法、静态方法、类。但reentrantLock只能用在代码块上

2. 锁是否自动释放

synchronized自动释放锁,ReentrantLock需要显示调用unlock()来释放锁

3.是否公平锁

synchronized是非公平锁,ReentrantLock可以是公平锁也可以是非公平锁

4.底层实现

synchronzied是JVM层面通过监视器实现的,而ReentrantLock是通过CAS+AQS程序级别的API实现的

5.响应中断不同

ReentrantLock可以响应中断,解决死锁问题;而synchronized不能响应中断

 

标签:事务,Synchronized,synchronized,ReentrantLock,划分,级别,Serializable,隔离
From: https://www.cnblogs.com/enhance/p/17498799.html

相关文章

  • AQS&&ReentrantLock
    参考:https://www.bilibili.com/video/BV15T4y1U71R/?spm_id_from=333.999.0.0&vd_source=46d50b5d646b50dcb2a208d3946b1598......
  • 人工智能核心技术与研究领域划分,最新《人工智能入门指南》开源
    经过半个多世纪的发展,人工智能技术逐步成熟,已然形成了固定的产业链。而随着近几年国家的大力支持,我国的人工智能产业规模也在不断扩大,科技人才供应吃紧,尤其是算法设计岗和应用开发岗供需比均在0.2以下,也就是说企业需要100个员工,市场却只能提供不到2个,人才的吸引和管理可谓迫在眉睫......
  • centos6以lvm划分磁盘分区swap/root禁用swap导致重启kernel异常
    目的禁用swap,虚机重启正常envcentos6.9root/swaplvm形式终端kernel异常,导致系统无法正常启动(引导出了问题)步骤正确禁用swap步骤1、sync刷新内存数据到磁盘2、关闭swapswapoff-a(有足够内存,防止内存不够频繁交换空间)3、注释/etc/fstab4、查看grub加载是......
  • Synchronized锁的膨胀升级-无锁及偏向锁
    转载:https://www.bilibili.com/video/BV1gP4y137pQ/?spm_id_from=333.337.search-card.all.click&vd_source=46d50b5d646b50dcb2a208d3946b1598https://www.bilibili.com/video/BV1yi4y1C7XY/?spm_id_from=trigger_reload&vd_source=46d50b5d646b50dcb2a208d3946b1598......
  • java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?
    java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?答案2023-06-21:java的:这个问题,我问了一些人,部分人是回答得有问题的。synchronized这是个关键字,加锁和解锁不是直接用代码实现,所以在代码层面上就杜绝了加锁和解锁不在同一个线程得情况。可以这么说,synch......
  • java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?
    java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?答案2023-06-21:java的:这个问题,我问了一些人,部分人是回答得有问题的。synchronized这是个关键字,加锁和解锁不是直接用代码实现,所以在代码层面上就杜绝了加锁和解锁不在同一个线程得情况。可以这么说,s......
  • 计算机网络——子网划分
    为什么要进行子网划分?在网络的ip地址中,我们常常看见ip地址后面有/24,/26,/32…的后缀,对于常用的ABC类地址,子网掩码是固定的,比如A类:255.0.0.0/8,B类:255.255.0.0/16,C类:255.255.255.0/24,后面的/8、/16、/24是子网掩码的位数。(将上面的子网掩码换成2进制表示,比如C类,就是11111111.11111......
  • 算法题总结-均等划分
    原题https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/submissions/给定一个整数数组nums和一个正整数k,找出是否有可能把这个数组分成k个非空子集,其总和都相等。[1<=k<=len(nums)<=16]输入示例nums=[4,3,2,3,5,2,1],k=4输出示例True......
  • Lock 与 synchronized
    1.对比1.1主要相同点:    Lock能完成synchronized所实现的所有功能。1.2不同:1)ReentrantLock功能性方面更全面,比如时间锁等候,可中断锁等候,锁投票等,因此更有扩展性。在多个条件变量和高度竞争锁的地方,用ReentrantLock更合适,ReentrantLock还提供了Condition,对线程的等待和唤醒......
  • strDivide2.cpp字符串划分
    //strDivide2.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include"string.h"/*s为bwe@#$at111YYY*oo那么func(s)将打印atbweooYYY★树★(240028358)21:07:57先挑字母,再排序吧国嵌唐老师(22134670)21:21:25我来说说......