目录

乐观锁和悲观锁的理解以及它的一下实现的一些方式?

乐观锁和悲观锁的理解以及它的一下实现的一些方式?

悲观锁顾名思义,我先一个个介绍,悲观锁就是很悲观,我们每次都在假设说我们在拿到这个数据的之前,有可能改过了我们这个数据,那就拿到不是我们想要的,所以在每次拿到数据的之前的时候,他都会上一次锁,这样别人如果想要去改完们这个数据,然后我们这个数据了他就会被阻塞到直到说他拿拿到这个锁,就我们传统的一些关系型数据库里面,其实用到很多,像这种锁机制,比如说我们的行(hang)锁,我们的表锁,读锁啊写锁呀,都是在操作之前,要先给他上一个锁,再比如我们 Java的 synchronized 这个关键字,其实它的实现也是一个悲观锁,这是我对悲观锁的一个见解,然后乐观锁,其实就是比较乐观,就是每次拿数据的时候呢,都觉得说别人不会在这个时候去改我们的数据,所以他不会去上一个锁,那他不会上锁的话,但是我们在更新数据的时候,我们会去判断一下说这个期间内,别人有没有动过我们这个数据,有没有更新过我们这个数据,所以乐观锁他可以提高我们的吞吐量,就像我们数据库里面他是有提供一个类,类似于我们的一个 write_condition 这么一个机制,其实就是提供一个乐观锁。