交易问题

3

我正在使用Java和MySql作为数据库。

我正在运行多个应用程序实例。我从数据库中选择一条记录,同时在获取记录后,我将其状态更新为“处理中”,以便其他实例无法访问该记录。

但是,情况是这些实例运行得非常快,当一个实例正在访问一条记录时,另一个实例也在访问同一条记录,而第一个实例还没有完成将其状态更新为“处理中”。我该怎么做才能使更新在其他实例访问之前完成?我在代码中使用了conn.setTransactionIsolation(conn.TRANSACTION_READ_COMMITTED),但这并没有起到帮助作用。

提前感谢您的帮助。

2个回答

2

0

我认为你的问题的解决方案是同步块。有两种方法可以实现。一种是编写同步块,另一种是将更新数据库代码放入一个同步方法中。这样,如果一个线程正在进行更改,则其他线程将无法访问它。

如需更多参考请点击此处


当实际上涉及多个JVM时,这并没有什么帮助。我认为这就是问题所在。 - Joachim Sauer
@Joachim Sauer,你能给我提供一个解决方案吗? - pritsag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接