乐观锁就是一种乐观的心态,就好像是自己上厕所不锁门相信被人不会抢坑位,悲观锁就是一种悲观的心态害怕别人跟你抢坑位所以加了锁
乐观锁
乐观锁不会给数据加锁,但是对修改操作时进行判断,判断版本号有没有改变,如果改变则是被别的线程抢先就不会进行修改了。
加入一个字段version,每次修改对其+1,当我们对其修改时先获取version的值,如果当我们对数据库操作时如果version的值已经改变就会操作失败,说明已经被其他线程抢先修改。
如:我们拿到数据时version是1,当我们对其进行更新时update test status = 5 where version =2
就会更新失败,这也就防止了并发数据错乱的问题。
悲观锁
悲观锁会给所有的数据加锁,每次只保证一个线程进行操作。
悲观锁就不用说了,嘎嘎加锁