gpt4 book ai didi

java - 替代文件锁定以确保只能启动一个应用程序实例

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:55 24 4
gpt4 key购买 nike

我正在使用 file.deleteOnExit()file.exists() 来确保在任何给定时间点只能运行我的应用程序的一个实例.然而,我开始看到该方法的主要缺陷:

1) 您可以复制锁定文件周围的所有文件并运行可执行文件。

2)如果JVM进程被强行结束,锁定文件不会被删除。

什么(也许除了套接字锁定)是一个好的选择?

编辑:
使用套接字仅锁定一个进程效果很好并且非常干净,但我听说过与其他应用程序和防火墙的潜在冲突。例如,如果所选端口出于某种原因被另一个进程使用,我的应用程序将认为另一个实例已经在运行 - 这就是为什么我想要一个替代解决方案。

最佳答案

您可以使用 FileChannel#lock() 方法进行多 JVM 锁定:

RandomAccessFile raf = new RandomAccessFile(".lock", "rw");
FileChannel fileChannel = raf.getChannel();
fileChannel.lock();

完成后不要忘记小心释放所有资源。

关于java - 替代文件锁定以确保只能启动一个应用程序实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784683/

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