如果已经运行在JVM中,如何指向相同的运行实例?

问题描述:

为了防止应用程序的多个实例,我使用了套接字技术。但是我想打开同样的应用程序实例,如果它已经在jvm中运行,就像skype.Skype自动启动相同的程序,如果我们从开始菜单启动。任何想法?如果已经运行在JVM中,如何指向相同的运行实例?

在这种情况下使您的应用程序Singleton

如果它不是null(正在运行),则使用相同的实例,否则将其实例化并使用它。要开始使用singleton设计模式,您可能需要参考this

如果你想检查是否从另一个Java进程,你可以参考下面的线程

How to programmatically detect if a process is running with Java under Windows?

如果你需要的进程正在运行,不采取任何行动运行某些程序。如果不启动它

Starting a process in Java?

启动过程应该很容易 -

通过Runtime.getRuntime().exec()执行start processName

不知道你是否能终止通过WMIC实用程序的过程,但你总是可以用WMIC获取进程的PID与taskkill /F /PID processPid

enter image description here

+0

是否可以打开或使用终止正在运行的过程中,杀死它WMIC? – 2014-09-21 07:31:28

+0

不确定您是否可以直接启动或终止使用wmic实用程序。由于您使用的是Java,因此您可以直接启动和停止(两步)。用相同的更新答案。 – 2014-09-21 07:56:45