Webコンテナによって作成されたスレッド(リクエストごとに新しいスレッドが作成される)が、スレッドクラスの拡張またはRunnable Interfaceの実装によって作成される通常のスレッドとどのように異なるかを知っていますか. また、サーブレット インターフェイスまたはそれを拡張するサーブレットに run() メソッドが含まれていない場合でも、Web コンテナーはどのようにスレッドを作成しますか。
2 に答える
Java のすべてのスレッドは、Thread Class の拡張または Runnable Interface の実装によって作成されます。したがって、Web コンテナー スレッドも同じ方法で作成されます。
サーブレット内に run メソッドが表示されないのは、コンテナの「メイン」スレッドによって作成されたスレッドの run メソッド内でサーブレット コードが呼び出されるためです。コンテナはこれらすべての詳細を抽象化するため、複数のリクエスト管理について心配する代わりに、リクエストごとに実際のロジック サーバーを作成することに集中できます。
すべてのコンテナーには、スタンドアロン アプリケーションの場合と同様に、または春の SpringMain に似た「メイン」スレッドがあります。
コンテナ スレッドと自分のスレッドを区別したい場合は、それらの名前を見てパターンを見つける必要があります。ビジネス ロジックによって作成されたスレッドの命名法を制御できます。
スレッド間の違いはありませんが、Web コンテナーの場合、スレッドは通常スレッド プールから取得されます。これは、新しいスレッド オブジェクトを毎回作成するとコストと時間がかかるためです。
(スレッドプールは、通常はキューに編成された、作業を行う準備ができている、事前にインスタンス化されたアイドル状態のスレッドのコレクションです)。