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

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

10.2.2 スレッド・モデル

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

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

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

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

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

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

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

image

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


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

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