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

如何确保程序的一个实例只能执行?

尉迟浩思
2023-03-14
问题内容

我希望我的程序(Java可执行文件.jar)仅运行一次。我编写了一个程序,但现在我希望用户不能打开多个实例…。感谢您的时间…

我已经检查了服务器/客户端解决方案和锁定文件,但是我不太了解它们,我也试图使它们在NetBeans中运行,但是没有运气…


问题答案:

您可以使用套接字-ServerSocket只能侦听尚未使用的端口。第一次启动会在该端口上成功创建一个ServerSocket实例-
在该程序运行时,无法在该端口上成功创建其他ServerSocket。

import java.io.IOException;
import java.net.ServerSocket;

public class OneInstance {

    private static ServerSocket SERVER_SOCKET;

    public static void main(String[] args) {
        try {
            SERVER_SOCKET = new ServerSocket(1334);
            System.out.println("OK to continue running.");
            System.out.println("Press any key to exit.");
            System.in.read();
        } catch (IOException x) {
            System.out.println("Another instance already running... exit.");
        }
    }
}


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

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

  • 问题内容: 我需要防止用户多次启动我的Java应用程序(WebStart Swing应用程序)。因此,如果应用程序已经在运行,则应该无法再次启动它或显示警告/再次关闭它。 有一些方便的方法可以做到这一点吗?我考虑过要阻止端口或将某物写入文件。但是希望您可以访问某些系统属性或JVM? 顺便说一句 目标平台是带有Java 1.5的Windows XP 问题答案: 我认为您的建议是在启动应用程序时打开端

  • 尝试使用npm run schema:download下载架构时,我收到以下错误。 my-app@0.1.0模式:下载npx-apollo服务:下载--endpoint=http://localhost:9000/graphql./src/app/grapql-schema.json ✔加载阿波罗项目✖保存模式。/src/app/graphql-schema.json →虚假结果。错误:无法使用g

  • 问题内容: 我希望我的应用程序检查自身的另一个版本是否已在运行。 例如,启动后,用户单击以再次运行它,但是第二个实例意识到“哦,等等,已经在运行中”。并退出并显示一条消息。 问题答案: 您所寻找的内容可能最好用锁定文件来完成。锁定文件仅是指具有预定义位置且存在您的互斥体的文件。 测试程序启动时该文件是否存在,如果存在,请立即退出。在已知位置创建文件。如果程序正常退出,请删除锁定文件。 最好的办法是

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