当前位置: 首页 > 面试题库 >

如何确保仅Java应用程序的单个实例在运行?

魏安宁
2023-03-14
问题内容

我希望我的应用程序检查自身的另一个版本是否已在运行。

例如,demo.jar启动后,用户单击以再次运行它,但是第二个实例意识到“哦,等等,已经在demo.jar运行中”。并退出并显示一条消息。


问题答案:

您所寻找的内容可能最好用锁定文件来完成。锁定文件仅是指具有预定义位置且存在您的互斥体的文件。

测试程序启动时该文件是否存在,如果存在,请立即退出。在已知位置创建文件。如果程序正常退出,请删除锁定文件。

最好的办法是,如果您还可以使用pid(进程ID)填充文件,以便可以检测到异常退出,但这些异常退出并没有删除文件,而是特定于操作系统的。



 类似资料:
  • 问题内容: 我正在使用WxPython开发GUI应用程序,但不确定如何确保在任何给定时间机器上仅运行我的应用程序的一个副本。由于应用程序的性质,多次运行没有任何意义,并且会很快失败。在Win32下,我可以简单地命名一个互斥体并在启动时进行检查。不幸的是,我不知道Linux中有什么设施可以做到这一点。 我正在寻找可以在应用程序意外崩溃时自动释放的内容。我不想因为我崩溃而不得不手动删除锁定文件而使用户

  • 问题内容: 有时我会看到许多应用程序,例如msn,Windows Media Player等都是单实例应用程序(当用户在应用程序运行时执行时,将不会创建新的应用程序实例)。 在中,我为此使用类,但是我不知道如何在Java中执行此操作。 问题答案: 我在主要方法中使用以下方法。这是我所见过的最简单。

  • 问题内容: 有没有一种Python方式可以只运行一个程序实例? 我想出的唯一合理的解决方案是尝试将其作为服务器在某个端口上运行,然后尝试将第二个程序绑定到同一端口-失败。但这不是一个好主意,也许有比这更轻巧的东西了吗? (考虑到程序有时可能会失败,例如segfault-因此“锁定文件”之类的东西将无法工作) 问题答案: 以下代码可以完成此工作,它是跨平台的,并且可以在Python 2.4-3.2上

  • 问题内容: 我试图确保脚本仍在开发服务器上运行。它整理统计数据并提供Web服务,因此应该可以持续使用,但是一天几次,它会由于未知原因而死掉。当我们注意到我们只是再次启动它时,但是后部很痛苦,有些用户没有权限(或专有技术)来启动它。 我内的程序员想花几个小时来解决问题的根源,但内心的忙碌的人认为必须有一种简便的方法来检测应用程序是否未运行,然后重新启动它。 我知道我 可以 通过grep cron-s

  • 问题内容: 有没有一种Python方式可以只运行一个程序实例? 我想出的唯一合理的解决方案是尝试将其作为服务器在某个端口上运行,然后尝试将第二个程序绑定到同一端口-失败。但这不是一个好主意,也许有比这更轻巧的东西了吗? (考虑到程序有时可能会失败,例如segfault-因此“锁定文件”之类的东西将无法工作) 问题答案: 以下代码可以完成此工作,它是跨平台的,并且可以在Python 2.4-3.2上

  • 我正在研究NFC应用程序。当我打开应用程序并从NFC标签读取信息时,活动打开哪个注册了意图过滤器,这将打开一个已经打开的应用程序的新实例。如何关闭应用程序的上一个实例或打开应用程序的上一个实例。 请帮帮我,抱歉英语不好。。提前谢谢。