当前位置:首页 > 天道酬勤 > 正文内容

java多线程乐观锁实现(悲观锁与乐观锁具有更好的并发性能)

张世龙2021年12月20日 04:18天道酬勤890

每天一问,你投稿,我来解答!

1、悲观锁和乐观锁的区别

悲观锁定:

因为总是假设最坏的情况,每次去取数据都觉得别人会修改,所以每次取数据都要上锁,阻止别人尝试取该数据直到解锁。 传统的关系数据库经常使用这种锁定机制,如行锁定、表锁定等,以及读锁定、写锁定等。 像for update一样,另外Java中同步原语synchronized关键字的实现也是悲观的锁定。

乐观摇滚:

ddz很乐观,每次去取数据都觉得别人不会修改,所以不会上锁,但是在更新期间可以判断别人是否去更新了该数据,使用版本号等结构。 乐观锁定适用于多种读取APP类型,以提高吞吐量。 实际上提供了乐观锁定,就像数据库提供的write_condition机制一样。

2、MVCC-版本并发控制

定义:

多版本并发控制是现代数据库引擎(如MySQL、Oracle和PostgreSQL )实现中常用的处理读写冲突的方法,目的是提高高并发情况下的数据库吞吐量性能。

这样,在不同的事务并行的同时,SELECT操作通过不锁定地读取MVCC机制指定的版本历史记录,保证读取的记录值满足事务所的独立性水平的手段,解决了同时场景下的读写冲突

如果想了解更多或者想投稿的话,请通过关注和私信回复【每天1个问题】或者【面试资料】。

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/25376.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。