2010-05-21 47 views
4

我正在开发一个新的Java桌面应用程序。就像媒体播放器一样。我想在计算机启动时在后台加载大部分资源。但用户可以在应用程序中关闭该选项或使用其他实用程序。那么,我想要做的是如果应用程序的禁用实例已经运行并且用户再次启动应用程序,那么我可以与已经运行的实例进行通信,以便它可以启动一个新窗口?应用程序的两个实例如何在Java中进行通信?

回答

7

最知名的方式来做到这一点是打开一个ServerSocket当第一应用程序启动一个众所周知的端口上。

如果ServerSocket无法加载,可能是因为某个实例已在运行。

在这种情况下,您可以打开一个套接字并开始在两个实例之间传达您的订单。

但您也可以使用更复杂的解决方案,如Jini或JGroups。

+1

+1用于提及更高级别的Java特定解决方案(如JGroups)。 – Thilo 2010-05-21 12:39:17

+0

另请参见ServerSockeChannel,它进一步封装了ServerSocket。 – 2010-05-21 12:53:54

+0

@Thilo JGroups一直是我第一个真正喜欢的不立即使用的图书馆。我总是发现它的能力相当神奇,至少可以说。 – Riduidel 2010-05-21 12:58:46

相关问题