-4

サーブレットからスレッドを起動することはお勧めできませんが、サーブレットから作成および起動されたこのスレッドが予期せず停止する原因を知りたいと思います。

たとえば、サーブレット スレッドを再利用すると、子スレッドが破棄される可能性があります。

生成されたサーブレットからのスレッドの寿命が最後まで保証されないことを示す明確な議論、またはそれ以外をサポートする理由が必要です。

私は議論を望んでいません。明確で決定的な例が欲しいのです。

4

1 に答える 1

4

サーブレットから作成されたスレッドは、(コンテナーが実行されている限り) コンテナーによって終了されません。これには、次の 2 つの理由があります。

  • コンテナーは、サーブレット内で作成されたスレッドへの参照を持たないため、たとえば、サーブレットで呼び出すことはできませんThread.stop()(はい、これは非推奨の方法であり、スレッドを終了する良い方法ではありません。詳細を参照してください)。
  • スレッド自体のみが、ロックしたモニターを適切にロック解除する方法を知っているため、スレッドを強制的に終了すると、モニターの状態に一貫性がなくなります。

ノート:

  • この動作はサーブレット仕様でカバーされていないため、Web コンテナーでどのように動作するかは保証されません。
  • これは Web コンテナーによって管理されるリソースであるため、サーブレットはスレッドを生成するべきではありません。
于 2013-05-13T13:08:04.353 に答える