在操作数据库逻辑里面加锁
将逻辑代码放在同步代码块synchronized()中(也可以直接加到函数上)
只要是同一把锁,就能锁住,需要这个锁的所有线程。
得到锁以后,我们应该再去缓存中确定一次,如果没有才需要继续查询。
1)synchronized (this):springboot所有的组件在容器中都是单例的。
本地锁:synchronized,JUC(lock),在分布式情况下,要使用分布式锁。
因为锁的时序问题,在结果没有放到缓存锁就被释放了,下一个又会查数据库。
在操作数据库逻辑里面加锁
只要是同一把锁,就能锁住,需要这个锁的所有线程。
得到锁以后,我们应该再去缓存中确定一次,如果没有才需要继续查询。
本地锁:synchronized,JUC(lock),在分布式情况下,要使用分布式锁。
因为锁的时序问题,在结果没有放到缓存锁就被释放了,下一个又会查数据库。