ロック ファイルを使用して、アプリの単一のインスタンスが実行されていることを確認するコードがいくつかあります。
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 番目のインスタンスが正常に開始されました...
このコードはどのように失敗しますか?