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

标签 java multithreading

很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .




10年前关闭。




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

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

有什么方法可以使用该表数据的通用列表吗?

最佳答案

如果您使用的不是最基本的 RDBM,那么它们将在数据级别处理并发更新。所以你在那里没问题。但是,您仍然希望处理调用者尝试根据陈旧数据进行更新的情况(这在多用户系统中经常发生)。您可以通过多种方式执行此操作:

  • 计算 ETAG并在他们检索时将其返回给每个调用者
    来自系统的实体信息。对于任何编辑/更新
    调用者必须返回带有 ETAG 的保存请求
    最初给出。然后在你的系统中读取持久化的实体,
    计算它的 ETAG,并确保它的值等于调用者的值
    已经给。如果不相等,那么您知道自
    调用者检索数据,您可能会引发错误。
  • 如果您使用的是 Hibernate,则可以自动完成此操作
    您可以利用其版本控制功能。您将版本字段添加到
    您的数据库,以及您的实体的注释版本属性。
    Hibernate 会自动管理被注释的实体,抛出一个
    如果您尝试使用
    版本号小于其在数据库中的对应行。你
    可以阅读更多关于 here .

  • 希望有帮助。

    关于Java多线程应用程序如何阻止对象给别人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8889384/

    相关文章:

    java - 将成员作为参数传递给新线程时的局部变量引用和 GC

    objective-c - 如何在 Objective C 中为 Google Drive 服务使用后台队列

    java - 如何阻止 Javafx 上的文本溢出

    java - 如何读取文件并计算字符数?

    java - 从 UTF-16LE 编码文件中删除非法 xml 字符

    java - 是否有用于 swing 的免费(LGPL< BSD 等)RDF 编辑器组件?

    java - AdvertisingIdClient getAdvertisingIdInfo 被主线程阻塞

    java - 如何使用 .map()/.filters() 添加不同类中存在的不同变量

    java - 为什么在 Java 中可以在没有竞争条件的情况下并发更新原子变量?

    c++ - 不理解条件变量超时