0

私はサーバーとクライアントのペアをJavaで記述していて、一方のアプリケーションが終了した場合にもう一方のアプリケーションを終了したいと考えています。これはどのように行われますか?また、ユーザーが手動で(つまり、cmd + q.alt + F4を押すなどして)アプリケーションを終了した場合に、プログラムに一連のコマンド(たとえば、ソケットを閉じるなど)を実行させる方法も知りたいです。

4

2 に答える 2

1

通常、これを行う方法は、ハートビート スレッドを個別に実行することです。これが機能する方法は -

  1. 各クライアントはハートビート スレッドを実行し、定期的にサーバーに「実行中です」というメッセージを送信します。要件に応じて、メッセージ間のタイミングを微調整できます。

  2. サーバーはハートビート リスナー スレッドを実行し、実行中のクライアントのリストを維持します。

  3. すべてのクライアントがメッセージの送信を停止すると、サーバーは数分待ってから正常にシャットダウンできます。

この設計は、単一のクライアントまたは多数のクライアントで機能します。

于 2011-11-25T19:08:26.710 に答える
1

一方が終了すると、もう一方にメッセージを送信して終了させます。

1 つのアプローチは、ポイズン ピル メッセージ/オブジェクトであり、そのメッセージに到達したときにレシーバーをシャットダウンします。

于 2011-12-05T18:45:45.143 に答える