如果使用 EJB3 Singleton Session Bean,那么有 ConcurrentHashMap 状态变量是没有意义的——对吗?我可以只使用由容器并发管理器管理的常规 HashMap 吗?
问问题
1247 次
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 回答