4

簡単に言えば、オブジェクトが Java のスレッドローカル シングルトンであると誰かが言うとき、それはどういう意味ですか? 私は Java Server Faces についての講義に出席していましたが、FacesContext について話すたびに、講師はそれがスレッドローカル シングルトンであることを常に思い出させてくれました。

4

1 に答える 1

14

FacesContextスレッドごとに一意のインスタンスが 1 つだけ存在します。

は、HTTP サーブレット要求の先頭でFacesServletを作成しThreadLocal<FacesContext>、HTTP サーブレット要求に関連付けられた HTTP サーブレット応答の最後でそれを削除します。JSF コードでa を実行するFacesContext#getCurrentInstance()と、HTTP サーブレットの要求/応答処理全体を通じて、常に同じインスタンスが取得されます。

HTTP サーブレット リクエストは個別のスレッドによって実行され、FacesContextインスタンスはスレッド ローカル変数として 1 つのスレッドにアタッチされるため、2 つの HTTP サーブレット リクエストが同じ FacesContextインスタンスを共有することはありません。

于 2011-02-28T03:15:57.367 に答える