悲观锁 和 乐观锁 区别

2026年09月23日 12:30
有4个网友回答
网友(1):

乐观锁和悲观锁的区别如下:
1、悲观锁是当线程拿到资源时,就对资源上锁,并在提交后,才释放锁资源,其他线程才能使用资源。
2、乐观锁是当线程拿到资源时,上乐观锁,在提交之前,其他的锁也可以操作这个资源,当有冲突的时候,并发机制会保留前一个提交,打回后一个提交,让后一个线程重新获取资源后,再操作,然后提交。和git上传代码一样,两个线程都不是直接获取资源本身,而是先获取资源的两个copy版本,然后在这两个copy版本上修改。
3、悲观锁和乐观锁在并发量低的时候,性能差不多,但是在并发量高的时候,乐观锁的性能远远优于悲观锁。
4、常用的synchronized是悲观锁,lock是乐观锁。

网友(2):

悲观锁适用于更改频繁的数据表,一开始查询就会上锁,直至更新操作结束才释放,性能有所下降,使用select ... from for update。
乐观锁适用于更改概率低的数据,只有在提交更新时才释放,这种方式其实就是自己在表里面增加一个字段,例如version(版本)字段,判断当前操作的数据是否是同一个版本。

网友(3):

一个悲观一个乐观呗

网友(4):

一个哭一个笑