我想知道在JAVA中限制对特定方法的多次访问的过程。 如果同一个方法被许多机器并行调用(它将返回结果集),我希望第二个方法调用等到第一个方法调用完全完成其进程。 在java中是否有任何功能可以实现此功能。
我正在研究一个Java EE应用程序 从DB打开excel文件, 它用用户值处理其中的变量, 它将在DB中更新tat报告并将更新的副本下载给用户。
当多人打开文件并处理数据的同时,它将导致错误。 帮我解决这个问题。
答案 0 :(得分:1)
如果要限制不同JVM中的调用者,则使用synchronized
将不起作用,因为没有单个锁可以全部使用。每个调用者都在其自己的应用程序实例中使用本地锁。所以Java无法为你做到这一点。
每个人共享的东西都是数据库中的行,这就是你应该锁定的内容。假设您的Excel文件位于数据库中的blob中,并假设您使用excel文件执行的所有操作都可以在一个事务中完成,那么您可以使用数据库事务和独占锁定来限制对数据的访问。
答案 1 :(得分:0)
请点击此处查看Synchronized Methods的说明。这将阻止所有呼叫者,但是一个呼叫者按顺序进行。