Interstage Application Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第2部 Servlet/JSP編> 第7章 Webアプリケーションの開発> 7.2 サーブレットの開発

7.2.2 スレッド・モデル

 JavaTM Servlet APIでは、マルチスレッド・モデルとシングルスレッド・モデルの2つのスレッド・モデルが用意されています。
 通常はマルチスレッド・モデルでサーブレットを作成します。
 ただし、どちらのスレッド・モデルも1サーブレットに対し、1インスタンスです。
 2つのスレッド・モデルの違いを説明します。

■マルチスレッド・モデル

 同時に複数の実行スレッドが動作することができますので、多重アクセスの対応に適しています。
 メソッドやインスタンス変数をスレッド間で共有し、Servletコンテナによる排他制御が行われません。
 そのため、メソッドやインスタンス変数の競合を避けたい場合は、synchronized宣言するなどのアプリケーションによる排他制御を行ってください。

■シングルスレッド・モデル

 同時に複数の実行スレッドは動作せず、メソッドやインスタンス変数の競合を避けるため、Servletコンテナによる排他制御が行われます。
 そのため、後続のリクエストは実行中のサーブレットの処理が終了するまで待ち状態となります。
 多重アクセスに対応する場合には不向きです。

■マルチスレッド・モデルの適用例

 以下にマルチスレッド・モデルを利用したDBアクセスの適用例を示します。

 WebブラウザAからのリクエストで確立したコネクションIDをインスタンス変数に格納します。
 WebブラウザBからのリクエストでは、インスタンス変数に格納されているコネクションIDを利用します。
 コネクションIDを共有することにより、2回目以降のデータベースへのアクセスの高速化が実現します。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005