gpt4 book ai didi

java - 防止启动 java 应用程序的多个实例

转载 作者:太空狗 更新时间:2023-10-29 22:32:41 27 4
gpt4 key购买 nike

我想阻止用户多次并行运行我的 java 应用程序。

为了防止这种情况,我在打开应用程序时创建了一个锁定文件,并在关闭应用程序时删除了锁定文件。

当应用程序运行时,您不能打开另一个jar 实例。但是,如果通过任务管理器杀死应用程序,则不会触发应用程序中的窗口关闭事件,也不会删除锁定文件。

如何确保锁定文件方法有效或我可以使用什么其他机制?

最佳答案

您可以使用 FileLock,这也适用于多个用户共享端口的环境:

String userHome = System.getProperty("user.home");
File file = new File(userHome, "my.lock");
try {
FileChannel fc = FileChannel.open(file.toPath(),
StandardOpenOption.CREATE,
StandardOpenOption.WRITE);
FileLock lock = fc.tryLock();
if (lock == null) {
System.out.println("another instance is running");
}
} catch (IOException e) {
throw new Error(e);
}

也在垃圾收集中幸存下来。一旦你的进程结束,锁就会被释放,无论是正常退出还是崩溃等等。

关于java - 防止启动 java 应用程序的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7036108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com