【发布时间】:2020-09-09 11:04:03
【问题描述】:
我有一个关于java并发访问的问题。
项目上下文如下:JSF 2.1; Richfaces 4、hibernate 3.6、spring 3.2、java 7。
我有一个表格,显示了几十万个文件夹(每个文件夹都是一个java对象),每个表格行都是一个动态链接,可以访问该对象(文件夹)的咨询或修改。
我的问题是:如何防止多个用户查看或编辑一个文件夹?
换句话说,您如何检测多个用户同时访问文件夹(对象 java)?
我知道使用方法同步这个词可以防止并发访问,但我想检测并发访问以警告其他用户或其他用户文件夹(对象 java)已经打开,我们必须等待它关闭。
谢谢
【问题讨论】:
-
首先,你需要把你试过的东西放上去。
-
您能否详细说明当其他用户被告知当前正在同步方法中执行哪个线程时您想做什么?如果他们试图访问同步块,他们无论如何都会被阻止。这本身不是被“告知”其他人正在访问数据吗?
-
我想我的解释不太清楚,想象一个 Web 应用程序,其中有几个具有不同个人资料的经理访问该应用程序进行咨询或修改(他们的个人资料允许),我只是想显示一个消息警告其他管理员他们尝试打开的文件夹正忙(由其他管理员打开),他们稍后再试。一次只能访问一位经理。我希望这次我清楚了。感谢您的帮助。
-
任何一个java对象,你怎么知道有几个连接到应用程序的用户正在咨询或修改它?
-
@ChungYang 如果他们尝试访问同步块,他们无论如何都会被阻止。这本身不是“知情”吗?线程无法知道它被阻塞,等待输入
synchronized语句。事实上,在最终获得进入许可之前,线程无法执行任何操作。你能做的最好的就是在进入之前和之后立即拍摄实时时钟的快照,然后根据测量的时间差,线程可以猜测它是否有被屏蔽了。
标签: java concurrency jsf-2