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

如何实现单个实例Java应用程序?

莫欣悦
2023-03-14
问题内容

有时我会看到许多应用程序,例如msn,Windows Media Player等都是单实例应用程序(当用户在应用程序运行时执行时,将不会创建新的应用程序实例)。

C#中,我Mutex为此使用类,但是我不知道如何在Java中执行此操作。


问题答案:

我在主要方法中使用以下方法。这是我所见过的最简单。

private static boolean lockInstance(final String lockFile) {
    try {
        final File file = new File(lockFile);
        final RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
        final FileLock fileLock = randomAccessFile.getChannel().tryLock();
        if (fileLock != null) {
            Runtime.getRuntime().addShutdownHook(new Thread() {
                public void run() {
                    try {
                        fileLock.release();
                        randomAccessFile.close();
                        file.delete();
                    } catch (Exception e) {
                        log.error("Unable to remove lock file: " + lockFile, e);
                    }
                }
            });
            return true;
        }
    } catch (Exception e) {
        log.error("Unable to create and/or lock file: " + lockFile, e);
    }
    return false;
}


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

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

  • 问题内容: 您对创建单个实例应用程序有什么建议,以便一次只允许一个进程运行?文件锁,互斥锁还是什么? 问题答案: 一个好的方法是: 请注意,锁定使您可以忽略陈旧的pid文件(即,您不必删除它们)。当应用程序由于任何原因终止时,操作系统会为您释放文件锁。 Pid文件并不是非常有用,因为它们可能是过时的(该文件存在但该过程没有)。因此,可以锁定应用程序可执行文件本身,而不是创建和锁定pid文件。 一种

  • 本文向大家介绍angular实现spa单页面应用实例,包括了angular实现spa单页面应用实例的使用技巧和注意事项,需要的朋友参考一下 本篇文章是对单页面的一个简单的基本逻辑操作,这个方法可以搭建基本的单页面的逻辑结构。 简单理解:单页面应用,锚点值切换,一个路由对应一个页面。 路由:此时会创建一个信息保存路由的信息,之后对页面a标签进行操作,会进入路由表中查找与之匹配的路由信息。 ----h

  • 本文向大家介绍Java编程实现springMVC简单登录实例,包括了Java编程实现springMVC简单登录实例的使用技巧和注意事项,需要的朋友参考一下 Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spri

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