4

だから私は学校向けの簡単なサーバークライアントプログラムを書いています。クライアントはコマンドといくつかのパラメーターを送信し、サーバーは応答を返します。

サーバーは新しい接続をリッスンし、新しいクライアント接続ごとにスレッドを作成します。サーバーリスナーは、mainによって開始される独立したスレッドでもあります。

サーバー側のMainはユーザー入力を待機し、適切な入力を受信すると終了します。

現状では、サーバーリスナーは次のようなループで実行されます。

while(true)
{
 ...
}

それで、mainがプログラムの最後に到達して終了すると、実行中のすべてのスレッドが強制終了されますか?それとも、実行が終了するのを待ちますか?

後者の場合、システムが終了しようとするとtrueを返す、呼び出すことができるある種のメソッドはありますか?

各コンポーネントは独自のクラスの一部であることに注意してください。

4

1 に答える 1

10

スレッドには、デーモンユーザーの2種類があります。メインスレッドは常にユーザースレッドです。

少なくとも1つのユーザースレッドがある限り、プロセスは存続します。すべてのユーザースレッドが終了すると、すべてのデーモンスレッドが強制終了され、プロセスが終了します。

スレッドのデーモンステータスを設定するには、スレッドを開始する前に呼び出すことができsetDaemon()ます。

それで、mainがプログラムの最後に到達して終了すると、実行中のすべてのスレッドが強制終了されますか?それとも、実行が終了するのを待ちますか?

デーモンスレッドの場合、最終的には強制終了されます。ユーザースレッドの場合、スレッドが実行され続ける限り、プロセスは存続します。

于 2012-11-25T07:39:31.117 に答える