gpt4 book ai didi

java - 悲观锁定奇怪的行为

转载 作者:行者123 更新时间:2023-12-01 21:54:47 24 4
gpt4 key购买 nike

我正在开发一个模块,在该模块中我使用悲观锁定来锁定一行。

我在服务方法中使用了以下代码:

examSession = ExamSession.lock(ID)
println "after lock " + new Date()
......
...........
examSession.addTo.........(object)
....................................
examSession.save()........
.......................................
trigger payment.......
...........................

当我在两个浏览器中点击按钮(几乎同时)到达服务方法代码时,我观察到另一个线程(第二个浏览器)在锁定语句后暂停,甚至不执行其后面的打印语句。它在等待第一个线程完成/提交事务 3-4 秒后执行。但我读到,在悲观锁定的情况下,仅暂停数据库读取操作。它至少应该执行打印语句。这是怎么发生的?

Grails 文档也没有详细指定 lock()。请澄清。

最佳答案

ExamSession.lock(ID) 获取(或尝试获取)锁。显然,如果已经获取了,则不会继续执行。

这正是悲观锁定应该做的事情,而且它的工作原理也完全正确。它不会在锁定语句之后暂停。它在 lock() 处暂停,因为它无法获取独占锁。

关于java - 悲观锁定奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34534562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com