2012-01-17 15 views
0

Java多线程应用程序如何将对象阻止给他人?Java多线程应用程序如何将对象阻止给他人?

它是否在数据库行中阻塞?

是否有任何方式使用该表数据的公用列表?

+0

你是否指多线程? – 2012-01-17 03:40:49

+0

OPS我的错误感谢 – Boni 2012-01-17 03:49:12

+0

请阅读'synchronized'关键字,然后'的Object.wait()'和'Object.notify()'。在此之后,你将有更好的运气来制定你的问题。 – 9000 2012-01-17 04:00:48

回答

1

如果您使用的是最基本的RDBM,那么它们将在数据级别处理并发更新。所以你还好。但是,您仍然希望处理调用者尝试基于陈旧数据进行更新(在多用户系统中经常发生这种情况)的情况。您可以在任何数量的方式做到这一点:

  • 计算的ETAG并返回给每个呼叫者,当他们从系统中检索 实体的信息。对于任何呼叫编辑/更新 来电者必须返回与ETAG的保存请求,他们是 最初给出。然后在您的系统中读取持久实体 计算其ETAG,并确保其值等于调用者 给出的值。如果不相等,则自 调用程序检索数据以来就知道进行了编辑,并且可能会产生错误。

  • 如果您正在使用Hibernate,你可以有这样的自动利用其版本功能为 你做。您将版本字段添加到您的数据库的 ,并将注释版本属性添加到您的实体。如果你尝试更新了 版本号的实体大于数据库中的相应的行少 Hibernate会自动管理等等注明实体,扔 StaleObjectException异常。您 可以阅读更多关于here

希望有所帮助。

相关问题