我在面试时被问到这个问题。 假设 VLC 播放器在那里并在我们的操作系统上运行。 现在,当我们再次尝试启动 VLC 时,应该不会发生这种情况。
或者,假设我们有两个命令窗口,我们在两个不同的窗口中运行相同的 java 程序。我们如何确保只运行一次。
这是操作系统依赖的东西吗? 什么是实现?
我读了一些关于 MUTEX/Semaphore 的内容,但我猜那只在一个 JVM 中。
最佳答案
您可以将 pid 文件写入磁盘的已知位置,表明应用程序已经在运行。然后,在启动时,查找该文件。如果它在那里,应用程序已经在运行,所以退出。
留给读者作为练习:确保即使在应用程序崩溃时也删除了 pid 文件。
关于java - 即使在 2 个不同的 JVM 中,我们如何确保任何应用程序只有一个实例在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25826765/