假设我有一个带有persondetails.java
主要类的Java程序。
Person1运行persondetails.java
以获取其详细信息。当第二个人试图访问同一系统中的同一个程序时,应该说某人已经在使用该程序,等到特定程序段在person1中完成。
如何在同一系统中的这两个Java进程之间进行通信?
答案 0 :(得分:0)
如果我正确理解你的问题,你想要一个只允许一次运行一个实例的程序吗?我能想到两个可能性。
使用某种"锁定"文件系统上的文件。执行程序时,它可以检查锁定文件是否存在,如果已存在则显示错误。如果锁定文件不存在,则会创建锁定文件并允许程序继续。您只需确保在程序完成时删除锁定文件。
绑定到特定端口(不太可能已被使用)。当程序执行时,你会尝试绑定到端口,如果你可以继续程序,否则你会给出错误。
无论哪种方式,您只是使用锁定机制来检测其他进程正在运行。
使用文件系统锁定可能会有问题。例如,如果程序失败并意外停止执行,则锁定文件可能会保留并阻止将来执行该程序。同时绑定到端口来实现这一点实际上是对该功能的误用,并且可能以它自己的方式存在问题(端口已经在使用,或者应用程序不被允许绑定到端口)。 / p>
我个人会仔细考虑是否真的有必要在不同的进程之间进行这种锁定。我认为有利于避免使用我之前提到的任何一种选择。
答案 1 :(得分:0)
在非常基础的层面上,程序可以创建一个名为lock的文件。这个过程就像是