単一インスタンスの Java アプリケーションの実装
MSN や Windows Media Player などの多くのアプリケーションは、単一インスタンスとして実行されるように設計されており、複数のインスタンスが実行されるのを防ぎます。アプリケーションの実行中に作成されます。 Mutex クラスは C# でこの機能を提供しますが、Java 開発者は別のアプローチをとります。
ファイル ロックを使用した Java ソリューション
単一インスタンスの 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; }
このメソッドは、ファイルのロックに依存して、複数のインスタンスが同時に実行されるのを防ぎます。アプリケーションの最初のインスタンスによって排他的に取得されるロック ファイルが作成されます。ロックを取得しようとする後続のインスタンスは失敗し、実質的に実行できなくなります。
アプリケーションが終了すると、シャットダウン フックが実行されてロックが解放され、ロック ファイルが削除され、クリーンアップが保証されます。
以上がファイル ロックを使用して単一インスタンスの Java アプリケーションを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。