【问题标题】:what Exception will be thrown when select a MySQL record that is locked with "FOR UPDATE"?选择一条被“FOR UPDATE”锁定的 MySQL 记录时会抛出什么异常?
【发布时间】:2012-03-21 15:11:55
【问题描述】:

我想使用 JDBC 访问 MySQL 数据库。如果我碰巧选择了之前被“SELECT ... FOR UPDATE”语句锁定的行,会引发什么或将引发什么 SQLException。

谢谢。

【问题讨论】:

  • 试一试,看看你得到了什么异常不是更容易吗?
  • 如果有人知道/看到过这种情况,我会尽快回答。

标签: java mysql jdbc concurrency


【解决方案1】:

我相信,不会抛出异常,调用Java线程只会被阻塞,直到RDBMS释放锁定的数据。这是正常情况,所以需要抛出异常。可以将其视为 Java 中 synchronized 块的模拟——当线程尝试进入已被另一个线程占用的 synchronized 块时,JVM 不会抛出异常。

这里可以抛出异常的唯一情况是:

  1. 与 RDBMS 的连接丢失时;
  2. 当 RDBMS 检测到并发事务出现死锁时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-29
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多