Queue引入篇
线程同步这块,之前讲了锁系列,现在把剩下的也说说
Queue大家都很熟悉,应用场景很多很多,不仅仅局限在线(进)程同步,很多业务场景都在使用。
在开始之前先看一个秒杀场景:一般都使用乐观锁,也就是大家经常提的CAS机制来实现,数据所在的内存值,预期值,新值。当需要更新时,判断当前内存值与之前取到的值是否相等,若相等,则用新值更新,若失败则不断重试( )
从数据库层面控制就是这样:(原子性操作)
我们用代码模拟一下:(Python里面没有 ,我们用之前学的条件变量实现一个)
模拟:
输出:(没错,没用锁一样高并发~)
如果你把 注释掉:(瞬间呵呵哒了)
如果你在修改的时候加个锁:
在这里说,其实没有多大意义,了解下即可(数据库最大连接数是有瓶颈的,后端项目里面一般都是使用缓存的 ,比如 的 、 的 和 ,还有就是我们下面要介绍的 了)
后面会说,引入部分不用深究,记住两个即可:
数据库层面的CAS机制(乐观锁)
Java里面 的模拟
领取专属 10元无门槛券
私享最新 技术干货