3

如果使用 EJB3 Singleton Session Bean,那么有 ConcurrentHashMap 状态变量是没有意义的——对吗?我可以只使用由容器并发管理器管理的常规 HashMap 吗?

4

2 回答 2

3

那是对的。如果没有指定其他内容,默认情况下单例会话 bean 使用容器管理的并发。此外,如果没有指定,每个业务和超时方法都默认具有 LockType.WRITE。结果是单例中没有多个线程同时执行方法,因此使用常规 java.util.HashMap 非常好。

于 2012-06-02T17:10:42.530 回答
3

对于所有方法,默认设置为@ConcurrencyManagement(CONTAINER)with ,因为所有方法调用都会阻塞等待写锁@Lock(WRITE),所以它的扩展性不如 a 。ConcurrentHashMap您可以使用@Lock(READ)andConcurrentHashMap来允许多个线程,但在这一点上,您不妨使用@ConcurrencyManagement(BEAN)来完全摆脱容器管理的并发性。

于 2012-06-03T15:02:01.117 回答