ホームページ > Java > &#&チュートリアル > Java アプリケーションのインスタンスが一度に 1 つだけ実行されるようにするにはどうすればよいですか?

Java アプリケーションのインスタンスが一度に 1 つだけ実行されるようにするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-16 01:28:16
オリジナル
678 人が閲覧しました

How Can I Ensure Only One Instance of My Java Application Runs at a Time?

単一インスタンス Java アプリケーションの作成

単一インスタンス アプリケーションでは、プログラムのインスタンスが一度に 1 つだけ実行されるため、複数の同時実行が防止されます。 C# では、Mutex クラスがこの目的を果たします。ただし、このような動作を Java で実装するには、別のアプローチが必要です。

Java 実装

Java で単一インスタンス アプリケーションを作成するには、一般的な解決策としてファイル ロック メカニズムを利用します。 。効果的な方法の 1 つは、プログラムの起動時に一時ファイルを作成し、そのファイルのロックを取得することです。ロックが正常に取得された場合は、アプリケーションが実行中の最初のインスタンスであることを示します。

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) {
                        // Handle exception appropriately
                    }
                }
            });
            return true;
        }
    } catch (Exception e) {
        // Handle exception appropriately
    }
    return false;
}
ログイン後にコピー

使用法

このメソッドは、次の main メソッドで呼び出すことができます。アプリケーションを使用して、単一のインスタンスがすでに実行されているかどうかを確認します。ロックが正常に取得された場合、アプリケーションは実行を続行できます。ロックを取得できない場合は、別のインスタンスがすでに実行中であることを示しており、現在のインスタンスは終了する必要があります。

このファイル ロック アプローチを採用することで、Java アプリケーションは必要な単一インスタンスの動作を実装し、インスタンスが 1 つだけであることを保証できます。一度に実行されます。

以上がJava アプリケーションのインスタンスが一度に 1 つだけ実行されるようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート