数据中的锁有哪些类型
发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,本篇内容介绍了"数据中的锁有哪些类型"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 悲观锁悲观锁
千家信息网最后更新 2024年11月18日数据中的锁有哪些类型
本篇内容介绍了"数据中的锁有哪些类型"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1. 悲观锁
悲观锁指对数据被外界修改持保守态度,认为数据很容易就会被其他线程修改,所以在数据被处理前先对数据进行加锁,并在整个数据处理过程中,使数据处于锁定状态。悲观锁主要分为共享锁和排他锁1. 共享锁【Shared lock】又称为读锁,简称S锁。顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。2. 排他锁【Exclusive lock】又称为写锁,简称X锁。顾名思义,排他锁就是不能与其他锁并存,如果一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据行读取和修改。例如:java中的synchronized关键字、接口Lock的实现类、mysql的select...for update等
2. 乐观锁
乐观锁是相对悲观锁来说的,它认为数据在一般情况下不会造成冲突,所以在访问记录前不会加排它锁,而是在进行数据提交更新时,才会正式对数据冲突与否进行检测。例如:使用数据版本(Version++)记录机制实现、使用时间戳、java中Atomic的CAS等
3. 公平锁
公平锁表示线程获取锁的顺序是按照线程请求锁的时间早晚来决定的,也就是最早请求锁的线程将最早获取到锁例如:ReentrantLock pairLock = new ReentrantLock(true);
4. 非公平锁
非公平锁表示线程获取锁的顺序不一定是先到先得。例如:ReentrantLock unpairLock = new ReentrantLock(false)。如果构造函数不传递参数,则默认是非公平锁。
5. 独占锁
独占锁是任何时候都只有一个线程能得到锁。例如:Java的ReentrantLock
6. 共享锁
共享锁是可以同时由多个线程持有,它允许一个资源可以被多线程同时进行读操作。例如:ReentrantReadWriteLock的读锁
7. 可重入锁
可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁。原理是在锁内部维护一个线程标示,用来标示该锁目前被哪个线程占用,然后关联一个计数器。一开始计数器值为0,说明该锁没有被任何线程占用。当一个线程获取了该锁时,计数器的值会变成1,这时其他线程再来获取该锁时会发现锁的所有者不是自己而被阻塞挂起。例如:public sychrnozied void test() { xxxxxx; test2();}public sychronized void test2() { yyyyy;}
8. 自旋锁
自旋锁是线程获取锁的时候,如果锁被其他线程持有,则当前线程将循环等待,直到获取到锁。
"数据中的锁有哪些类型"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
线程
数据
悲观
事务
时候
类型
乐观
顾名思义
内容
同时
多个
就是
情况
方法
时间
是在
更多
知识
计数器
过程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
民营数据库杂志期刊
贵阳白云区初级网络技术员
怎样面试国企软件开发人员
近三年网络安全发展
服务器后台管理软件
武汉iptv服务器费用
网络安全处置手册
计算机网络技术 资料
长沙手机软件开发学校
fm2015数据库
网络服务器作用
突然无法连接到服务器是什么原因
河南商丘软件开发培训学校
达梦数据库迁移启用超长记录
软件开发如何作图
数据库对口升学研讨
热血传奇63区几个服务器
2018年网络安全厂商排名
怎样给网络安全设置密码
电子发票如何导出数据库
不同数据库设计
数据库写宿舍信息表怎么写
网络安全学校网络的论文
汉中软件开发厂家
宁波第三届网络安全
数据库触发器在哪里
db2 查看数据库日志
discuz数据库调用
阿里云服务器增加data盘
苹果手机收件服务器