0

如何用 Java 为整台计算机创建一个真正的单例?

我有一个用 Java 编写的控制台应用程序。如果应用程序第二次执行,我希望它知道主应用程序已经在运行(并正在执行作业)。第二次执行将只允许用户查询数据(作业)。我知道我可以创建一个文件并将所有内容写入其中,但是我还必须支持计算机重置等。

有更好的方法吗?

总结一下:

  • 我启动应用程序。它有作业并以想要的间隔执行它们。
  • 我第二次启动应用程序。我收到作业已经在运行的消息,我可以从第一个应用程序查询数据。
  • 第三次启动应用程序,它的工作方式与第二次相同。
  • 如果我停止第一个实例并启动一个新实例,它就像第一个实例一样工作。

PS 我确实知道这个问题一定被问过不止一次,但谷歌和 StackOverflow 搜索只给我与单例设计模式相关的链接。

4

2 回答 2

3

是一个链接,可以做你想做的事。

这提供了一个在启动时绑定到套接字的代码示例,然后如果在启动时绑定了某些东西,那么它会发送一条消息

您可以使用它在您的进程之间进行通信。

于 2013-02-23T15:58:47.070 回答
2

正如评论中提到的@PaulTomblin,您可能应该将服务器套接字绑定到特定端口。这有两个目的。如果端口当前未绑定,则正在运行的进程成为主实例。如果端口已经绑定,那么正在运行的进程将成为客户端,而是连接到端口以便与主实例通信。

于 2013-02-23T15:56:30.150 回答