私はサーバーとクライアントのペアをJavaで記述していて、一方のアプリケーションが終了した場合にもう一方のアプリケーションを終了したいと考えています。これはどのように行われますか?また、ユーザーが手動で(つまり、cmd + q.alt + F4を押すなどして)アプリケーションを終了した場合に、プログラムに一連のコマンド(たとえば、ソケットを閉じるなど)を実行させる方法も知りたいです。
2 に答える
1
通常、これを行う方法は、ハートビート スレッドを個別に実行することです。これが機能する方法は -
各クライアントはハートビート スレッドを実行し、定期的にサーバーに「実行中です」というメッセージを送信します。要件に応じて、メッセージ間のタイミングを微調整できます。
サーバーはハートビート リスナー スレッドを実行し、実行中のクライアントのリストを維持します。
すべてのクライアントがメッセージの送信を停止すると、サーバーは数分待ってから正常にシャットダウンできます。
この設計は、単一のクライアントまたは多数のクライアントで機能します。
于 2011-11-25T19:08:26.710 に答える
1
一方が終了すると、もう一方にメッセージを送信して終了させます。
1 つのアプローチは、ポイズン ピル メッセージ/オブジェクトであり、そのメッセージに到達したときにレシーバーをシャットダウンします。
于 2011-12-05T18:45:45.143 に答える