特定の時間に実行できる Java プログラムのインスタンスは 1 つだけである必要があります。以前のさまざまな投稿で、スタック オーバーフローで提案された多数のソリューションを確認しました。
ソリューションは以下に基づいています。
- ソケットを開く: ソケット接続を開きます。
- ファイルのロックに基づく: 一時ファイルを作成し、ロックを保持します。また、シャットダウン フックを追加して、JVM のシャットダウン時にそのファイルのロックを解除します。
ポートの使用で競合が発生する可能性があるため、ポート ロックは使用したくありません。
そこで、ファイルロックを使用することを考えていました。少し調べたところ、ポート ロック ベースのメカニズムの支持者は、アプリケーションがクラッシュした場合やその他の IO エラーが発生した場合、ファイル ロックが信頼できない可能性があると述べていることがわかりました。
私が必要としているのは、クロス プラットフォームおよび複数の JDK で一貫して機能するソリューションを見つけることです。私が意図するプラットフォームは Windows と Linux であり、JDK は Sun と IBM JDK です。
誰でもこれに光を当てることができますか?