2 ht314495132 ht314495132 于 2014.06.18 19:46 提问

JAVA WEB应用,一个操作只能同时有一个用户操作

一个B/S系统,其中有个调用Linux脚本的操作,执行时间较长,要求系统只能同时有一个用户执行此操作,否则提示其他用户正在执行,请问下该如何实现呢?

4个回答

dncszp
dncszp   2014.06.25 12:19
已采纳

在該腳本開頭添加“ps -ef | grep 'yourshell'”,返回監測結果,看是繼續執行,或是退出交回到java

heizhemu
heizhemu   2014.06.19 11:44

这个可以当启动linux脚本时,写一个标识位到一个文件内.当其它用户再启动linux脚本时,检测这个文件.是否存在即可.

chbhhz
chbhhz n分钟自动处理一次
接近 4 年之前 回复
ht314495132
ht314495132 嗯,我现在就是用的这种方法, 但是我怕出现不可知的异常导致退出时,不能将文件删除,后面用户将不能执行。
接近 4 年之前 回复
secret32
secret32   2014.06.20 16:44

就是保存一下linux脚本的执行状态 至于是保存到文件、数据库还是就在内存中就看你的需求了 个人觉得在内存中保存就可以了

ht314495132
ht314495132 嗯,谢谢,感觉没必要放数据库,现在就是创建了一个tmp文件,以此来判断的,但是我怕出现不可知的异常导致退出时,不能将文件删除,后面用户将不能执行。
接近 4 年之前 回复
ybhuxiao
ybhuxiao   2014.06.23 10:00

1、如楼上们说的,搞一个标志位,用Java静态变量应该就可以了。
2、为了防止并发操作,同时多个用户执行,Java中写一个synchronized代码段,将标志位的判断、该写以及文件操作放在代码段中。

ht314495132
ht314495132 道行太浅,对synchronized理解不够,我再好好理解下这个关键字,应该标示整个方法吧?
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!