1

ロック ファイルを使用して、アプリの単一のインスタンスが実行されていることを確認するコードがいくつかあります。

public static boolean ensureSingleInstance(String appName) {
    try {
        String path = Paths.get(System.getProperty("java.io.tmpdir"),  appName + ".lock").toString();
        File file = new File(path);
        RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
        if (randomAccessFile.getChannel().tryLock() != null) {
            file.deleteOnExit();
            return true;
        }
    } catch (IOException ignore) {
    }
    return false;
}

これは 99.9% の確率で機能します。そして昨日、本番環境で、アプリの 2 番目のインスタンスが正常に開始されました...

このコードはどのように失敗しますか?

4

0 に答える 0