単一インスタンスの Java アプリケーションの作成: 堅牢なアプローチ
MSN や Windows Media Player などの単一インスタンスのアプリケーションでは、同じアプリケーションが同時に実行されないようにします。 Java 開発者にとって、この機能を実現するには、C# で Mutex を使用するのとは異なるアプローチが必要です。
単一インスタンスの 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 アプリケーションが複数のインスタンスが同時に実行されるのを効果的に防ぐことができます。
以上がファイル ロックを使用して単一インスタンスの Java アプリケーションを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。