如何选择合适的【多线程锁策略】?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4480个文字,预计阅读时间需要18分钟。
@TOC
一、常见的锁策略
1.悲观锁 VS 乐观锁
悲观锁:假设最坏的情况,每次访问数据时都认为其他用户会修改数据,因此每次操作都会加锁。这种方式可以避免数据冲突,但会降低并发性能。 乐观锁:假设最坏的情况不会发生,在数据读取时不加锁,只在数据更新时检查是否有其他用户已经修改了数据。如果检测到数据已被修改,则放弃更新。这种方式可以提高并发性能,但可能会发生冲突。@TOC
一、常见的锁策略
1. 悲观锁 VS 乐观锁
悲观锁 :
总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别
人想拿这个数据就会阻塞直到它拿到锁。
预期锁冲突的概率很高
就是它认为,只要它一加锁,就会出现锁冲突。
乐观锁:
假设数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会正式对数据是否产生并发冲
突进行检测,如果发现并发冲突了,则让返回用户错误的信息,让用户决定如何去做.
预期锁冲突的概率很低
就是说:它加锁没有那么容易就会出现锁冲突。
思考一个问题:
是悲观锁背后做的事情多,还是乐观锁背后做的事情多?
悲观锁的事情做得多
举例:
疫情期间,谁也不知道下一步疫情会不会更严重,疫情一旦严重,吃饭都成问题。可能会买不到菜! 悲观锁,就是在认为下一时刻就会出现这样的问题!为此,它去超市菜场买了大量的各种各样的生活用品 和 菜,屯在家里,以防不时之需。 乐观锁,就是认为在国家的管控下,疫情很难复发。为此它认为不需要屯那么多货。
本文共计4480个文字,预计阅读时间需要18分钟。
@TOC
一、常见的锁策略
1.悲观锁 VS 乐观锁
悲观锁:假设最坏的情况,每次访问数据时都认为其他用户会修改数据,因此每次操作都会加锁。这种方式可以避免数据冲突,但会降低并发性能。 乐观锁:假设最坏的情况不会发生,在数据读取时不加锁,只在数据更新时检查是否有其他用户已经修改了数据。如果检测到数据已被修改,则放弃更新。这种方式可以提高并发性能,但可能会发生冲突。@TOC
一、常见的锁策略
1. 悲观锁 VS 乐观锁
悲观锁 :
总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别
人想拿这个数据就会阻塞直到它拿到锁。
预期锁冲突的概率很高
就是它认为,只要它一加锁,就会出现锁冲突。
乐观锁:
假设数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会正式对数据是否产生并发冲
突进行检测,如果发现并发冲突了,则让返回用户错误的信息,让用户决定如何去做.
预期锁冲突的概率很低
就是说:它加锁没有那么容易就会出现锁冲突。
思考一个问题:
是悲观锁背后做的事情多,还是乐观锁背后做的事情多?
悲观锁的事情做得多
举例:
疫情期间,谁也不知道下一步疫情会不会更严重,疫情一旦严重,吃饭都成问题。可能会买不到菜! 悲观锁,就是在认为下一时刻就会出现这样的问题!为此,它去超市菜场买了大量的各种各样的生活用品 和 菜,屯在家里,以防不时之需。 乐观锁,就是认为在国家的管控下,疫情很难复发。为此它认为不需要屯那么多货。

