如何选择合适的【多线程锁策略】?

2026-06-11 13:150阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计4442个文字,预计阅读时间需要18分钟。

如何选择合适的【多线程锁策略】?

@TOC

一、常见的锁策略

1.悲观锁 VS 乐观锁

悲观锁:假设最坏的情况,每次访问数据时都认为别人会修改,所以每次在读取数据前都会上锁,直到事务结束才释放锁。 乐观锁:假设最好的情况,在读取数据时不会发生冲突,所以在读取数据时不上锁,只有在提交更新时才检查是否有冲突,如果有则失败重试。

@TOC


一、常见的锁策略

1. 悲观锁 VS 乐观锁

悲观锁 :

总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别

人想拿这个数据就会阻塞直到它拿到锁。

预期锁冲突的概率很高

就是它认为,只要它一加锁,就会出现锁冲突。 

乐观锁:

假设数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会正式对数据是否产生并发冲

突进行检测,如果发现并发冲突了,则让返回用户错误的信息,让用户决定如何去做.

预期锁冲突的概率很低

就是说:它加锁没有那么容易就会出现锁冲突。


思考一个问题:

是悲观锁背后做的事情多,还是乐观锁背后做的事情多?

悲观锁的事情做得多

举例:

疫情期间,谁也不知道下一步疫情会不会更严重,疫情一旦严重,吃饭都成问题。可能会买不到菜! 悲观锁,就是在认为下一时刻就会出现这样的问题!为此,它去超市菜场买了大量的各种各样的生活用品 和 菜,屯在家里,以防不时之需。 乐观锁,就是认为在国家的管控下,疫情很难复发。为此它认为不需要屯那么多货。即使疫情真的复发,也不会支持太久,菜也应该是能买到,物资完全够用。

阅读全文
标签:线程

本文共计4442个文字,预计阅读时间需要18分钟。

如何选择合适的【多线程锁策略】?

@TOC

一、常见的锁策略

1.悲观锁 VS 乐观锁

悲观锁:假设最坏的情况,每次访问数据时都认为别人会修改,所以每次在读取数据前都会上锁,直到事务结束才释放锁。 乐观锁:假设最好的情况,在读取数据时不会发生冲突,所以在读取数据时不上锁,只有在提交更新时才检查是否有冲突,如果有则失败重试。

@TOC


一、常见的锁策略

1. 悲观锁 VS 乐观锁

悲观锁 :

总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别

人想拿这个数据就会阻塞直到它拿到锁。

预期锁冲突的概率很高

就是它认为,只要它一加锁,就会出现锁冲突。 

乐观锁:

假设数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会正式对数据是否产生并发冲

突进行检测,如果发现并发冲突了,则让返回用户错误的信息,让用户决定如何去做.

预期锁冲突的概率很低

就是说:它加锁没有那么容易就会出现锁冲突。


思考一个问题:

是悲观锁背后做的事情多,还是乐观锁背后做的事情多?

悲观锁的事情做得多

举例:

疫情期间,谁也不知道下一步疫情会不会更严重,疫情一旦严重,吃饭都成问题。可能会买不到菜! 悲观锁,就是在认为下一时刻就会出现这样的问题!为此,它去超市菜场买了大量的各种各样的生活用品 和 菜,屯在家里,以防不时之需。 乐观锁,就是认为在国家的管控下,疫情很难复发。为此它认为不需要屯那么多货。即使疫情真的复发,也不会支持太久,菜也应该是能买到,物资完全够用。

阅读全文
标签:线程