java – 通知单独的JVM以执行任务

所以我正在创建一个程序,它一次只能运行一个实例,并且正在使用这个solution

但是现在我想这样做,如果用户尝试启动另一个实例,它将使用该尝试并通知当前实例显示其gui.

目前我正在考虑通过使用文件来做到这一点.启动第二个实例后,将创建一个名为show.stage的文件.当另一个实例检测到该文件时,它将显示其gui并删除该文件.

我知道这有效,但我想知道是否有更优雅的方式来做到这一点.

我是否可以设置另一个实例可以检查的环境标志,或者可以通过套接字监听器通知它,尽管其他人似乎不鼓励这样做.我觉得创建文件将是最简单和最强大的方式,但我愿意接受任何建议

该程序将在普通窗口上运行.

解决方法:

如果你不想使用锁文件(我认为这是一个非常好的解决方案),你可以使用套接字.

让您的应用程序创建套接字服务器并在localhost中的某个端口侦听.如果它听不到,那就意味着其他人已经在监听该端口 – 很可能是你应用的另一个实例.您甚至可以连接到该端口并发送消息以通知主实例第二个实例尝试生成.

需要注意的是,如果另一个应用合法地使用该端口,您的应用将永远无法运行 – 但我发现这种情况不太可能发生.

上一篇:c# – 尝试启动第二个实例时的CantStartSingleInstanceException


下一篇:java-并发编程-多线程设计模式-单例设计模式的七种写法