Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 整台电脑的真正单件?_Java_Single Instance - Fatal编程技术网

Java 整台电脑的真正单件?

Java 整台电脑的真正单件?,java,single-instance,Java,Single Instance,如何用Java为整个计算机创建一个真正的单例 我有一个用Java编写的控制台应用程序。如果第二次执行应用程序,我希望它知道主应用程序已经在运行(并且正在执行作业)。第二次执行只允许用户查询数据(作业)。我知道我可以创建一个文件并将所有内容写入其中,但我还必须支持计算机重置等 有更好的方法吗 总结如下: 我启动应用程序。它有作业,并以wanten间隔执行它们 我第二次启动应用程序。我收到消息说作业已经在运行,我可以从第一个应用程序查询数据 第三次启动应用程序,其工作原理与第二次相同 如果我停止第

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

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

有更好的方法吗

总结如下:

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

另外,我知道这个问题肯定被问了不止一次,但是google和StackOverflow搜索只提供了与Singleton设计模式相关的链接。

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

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

是一个可以执行您所需操作的链接。

这提供了一个代码示例,该代码在启动时绑定到套接字,然后如果在启动时绑定了某个对象,则会发送一条消息

您可以使用此链接在流程之间进行通信。

是一个链接,它可以实现您想要的功能。

这提供了一个代码示例,该代码在启动时绑定到套接字,然后如果在启动时绑定了某个对象,则会发送一条消息


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

使用套接字通信或类似于单例的东西来实现这一点对于单个JVM来说不是一个好主意;我认为对于机器上的所有JVM来说,它们更糟糕。让你的第一个应用程序连接到一个套接字作为服务器。在第一个端口死亡之前,其他端口将无法作为服务器绑定到该端口。作为奖励,其他人可以绑定为客户机,并使用该套接字在他们之间进行通信。您将需要某种进程间通信,无论是文件还是套接字,甚至是共享内存。使用一个简单的文件有什么不对?当然,Google是这么看待单例的:你用套接字通信或者类似单例的东西来实现这一点对于单个JVM来说不是个好主意;我认为对于机器上的所有JVM来说,它们更糟糕。让你的第一个应用程序连接到一个套接字作为服务器。在第一个端口死亡之前,其他端口将无法作为服务器绑定到该端口。作为奖励,其他人可以绑定为客户机,并使用该套接字在他们之间进行通信。您将需要某种进程间通信,无论是文件还是套接字,甚至是共享内存。使用简单文件有什么不对?当然,下面是Google对Singleton的看法:示例明确指定了一个套接字端口。如果其他应用程序使用相同的端口,这可能会很麻烦。另一种方法是动态分配端口,将端口记录在定义良好的位置(文件、数据库、注册表等),连接到该端口并确认其身份。该示例显式指定了单个套接字端口。如果其他应用程序使用相同的端口,这可能会很麻烦。另一种方法是动态分配端口,将端口记录在定义良好的位置(文件、数据库、注册表等),连接到端口并确认身份。