我见过很多关于如何阻止Java应用程序的例子,例如锁定文件或创建套接字。
如何允许多个实例运行,但检查另一个实例是否正在运行?
我需要这样做的原因是我想在退出时清理一个临时文件夹,但是如果有另一个进程正在运行则不行。
答案 0 :(得分:0)
您可以使用任何您喜欢的IPC。例如,创建/tmp/you_app_name_flag.$$
个文件($$表示pid)并验证应用启动时/tmp/you_app_name_flag.*
的存在。
答案 1 :(得分:0)
您可以使用attach API并检查正在运行的虚拟机,如此blog entry中所述
获取VirtualMachine的另一种方式是询问系统已知的虚拟机列表,然后选择您感兴趣的特定虚拟机,通常按名称:
String name = ... List vms = VirtualMachine.list(); for (VirtualMachineDescriptor vmd: vms) { if (vmd.displayName().equals(name)) { VirtualMachine vm = VirtualMachine.attach(vmd.id()); String agent = ... vm.loadAgent(agent); // ... } }