Java编程:悲观锁、乐观锁的区别及使用场景
来源:互联网 发布:asp订单系统源码 编辑:程序博客网 时间:2024/05/11 20:17
定义:
悲观锁(Pessimistic Lock):
每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。
乐观锁(Optimistic Lock):
每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候需要判断该数据是否被别人修改过。如果数据被其他线程修改,则不进行数据更新,如果数据没有被其他线程修改,则进行数据更新。由于数据没有进行加锁,期间该数据可以被其他线程进行读写操作。
适用场景:
悲观锁:比较适合写入操作比较频繁的场景,如果出现大量的读取操作,每次读取的时候都会进行加锁,这样会增加大量的锁的开销,降低了系统的吞吐量。
乐观锁:比较适合读取操作比较频繁的场景,如果出现大量的写入操作,数据发生冲突的可能性就会增大,为了保证数据的一致性,应用层需要不断的重新获取数据,这样会增加大量的查询操作,降低了系统的吞吐量。
总结:两种所各有优缺点,读取频繁使用乐观锁,写入频繁使用悲观锁。
1 0
- Java编程:悲观锁、乐观锁的区别及使用场景
- 悲观锁和乐观锁的区别及应用场景
- 悲观锁和乐观锁的区别和应用场景
- 悲观锁和乐观锁的区别和应用场景
- 悲观锁以及乐观锁使用场景
- 乐观锁与悲观锁使用场景
- 乐观锁与悲观锁的定义及区别
- 乐观锁与悲观锁的区别
- 乐观锁与悲观锁的区别
- 乐观锁和悲观锁的区别
- 乐观锁和悲观锁的区别
- 乐观锁与悲观锁的区别
- 乐观锁和悲观锁的区别
- 乐观锁与悲观锁的区别
- 乐观锁和悲观锁的区别
- 乐观锁和悲观锁的区别
- 乐观锁和悲观锁的区别
- 乐观锁和悲观锁的区别
- 时间日期滚轮(安卓)
- 2016年末的随笔
- JavaScript之DOM
- GitLab 网页不能登陆时的配置(登陆对话框消失了)
- R-CNN系列object detection方法概述
- Java编程:悲观锁、乐观锁的区别及使用场景
- 【学习笔记】LaTex数学符号极简速查
- html_列表_图片
- Lattice系列FPGA入门相关4(FPGA 扇入扇出 )
- 数据库删除表中的记录
- Git记录
- JavaScript浏览器对象BOM
- C++11中的智能指针
- Good Bye 了 2016