我已经看到了许多有关如何防止Java应用程序的示例,例如锁定文件或创建套接字。
如何允许多个实例运行,但检查另一个实例是否正在运行?
我需要执行此操作的原因是,我想在退出时清理一个临时文件夹,但是如果正在运行另一个进程,则不需要这样做。
最佳答案
您可以使用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);
// ...
}
}