悲观锁和乐观锁的用处和区别?

2025-04-09 01:31:47
推荐回答(4个)
回答1:

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

回答2:

用处:保证数据安全,处理多用户并发访问。

区别:

  1. 悲观锁,从数据开始更改时就将数据锁住,知道更改完成才释放。
    乐观锁,直到修改完成准备提交所做的的修改到数据库的时候才会将数据锁住。完成更改后释放。

  2. 悲观锁会造成访问数据库时间较长,并发性不好,特别是长事务。乐观锁在现实中使用得较多,厂商较多采用。


回答3:

保证数据安全,处理多用户并发访问。
悲观锁,锁如其名,他对世界是悲观的,他认为别人访问正在改变的数据的概率是很高的,所以从数据开始更改时就将数据锁住,知道更改完成才释放。
乐观锁,他对世界比较乐观,认为别人访问正在改变的数据的概率是很低的,所以直到修改完成准备提交所做的的修改到数据库的时候才会将数据锁住。完成更改后释放。

悲观锁会造成访问数据库时间较长,并发性不好,特别是长事务。
乐观锁在现实中使用得较多,厂商较多采用。

回答4:

不靠谱,还是看心情吧