1

我想知道在 JAVA 中限制对特定方法的多次访问的过程。如果许多机器并行调用相同的方法(这将返回一个结果集),我希望第二个方法调用等到第一个方法调用完全完成其过程。java中是否有任何功能可以实现此功能。

我正在开发一个 Java EE 应用程序,它将从 DB 打开一个 excel 文件,它使用用户值处理其中的变量,它会更新 DB 中的 tat 报告并将更新的副本下载给用户。

这里当多人同时打开文件和进程处理数据时会导致错误。帮我解决这个问题。

4

2 回答 2

1

如果您想限制不同 JVM 中的调用者,则usingsynchronized将不起作用,因为没有它们都可以使用的单一锁。每个调用者都在使用它自己的应用程序实例的本地锁。所以Java没有办法为你做这件事。

每个人都共享的是数据库中的行,这就是您应该锁定的内容。假设您的 Excel 文件位于数据库中的一个 blob 中,并且假设您对 excel 文件所做的一切都可以在一个事务中完成,那么您可以使用数据库事务和排他锁定来限制对数据的访问。

于 2013-01-08T14:29:18.533 回答
0

有关同步方法的说明,请参见此处。这将阻止除一个之外的所有呼叫者,并让他们按顺序进入。

于 2013-01-07T09:12:30.400 回答