3

EJB3 シングルトン セッション Bean を使用している場合、ConcurrentHashMap 状態変数を使用しても意味がありません。正しいですか? Container Concurrency Manager によって管理される通常の HashMap を使用できますか?

4

2 に答える 2

3

デフォルトはすべてのメソッドに対して@ConcurrencyManagement(CONTAINER)withです。これは、すべてのメソッド呼び出しが書き込みロックの待機をブロックするため、@Lock(WRITE)a ほどうまくスケーリングしません。とをConcurrentHashMap使用して複数のスレッドを許可することもできますが、その時点で、 を使用してコンテナー管理の同時実行を完全に取り除くこともできます。@Lock(READ)ConcurrentHashMap@ConcurrencyManagement(BEAN)

于 2012-06-03T15:02:01.117 に答える
3

それは正しいです。他に何も指定されていない場合、デフォルトでシングルトン セッション Bean はコンテナー管理の同時実行性を使用します。さらに、指定されていない場合、すべてのビジネスおよびタイムアウト メソッドには、デフォルトで LockType.WRITE があります。その結果、シングルトンで複数のスレッドが同時にメソッドを実行することはなく、その結果、通常の java.util.HashMap を使用してもまったく問題ありません。

于 2012-06-02T17:10:42.530 に答える