【发布时间】:2012-05-17 11:37:15
【问题描述】:
我有一个后续问题: EJB 3.1 container managed concurrency vs. synchronized
锁是仅防止对持久上下文中的数据的并发访问等,还是还为私有字段提供同步?
【问题讨论】:
标签: synchronization locking ejb-3.1
我有一个后续问题: EJB 3.1 container managed concurrency vs. synchronized
锁是仅防止对持久上下文中的数据的并发访问等,还是还为私有字段提供同步?
【问题讨论】:
标签: synchronization locking ejb-3.1
最容易想象有一个每个 bean java.util.concurrent.ReadWriteLock,容器在 lock() 和 unlock() 周围调用 readLock() 或 writeLock() 上的方法调用,具体取决于配置的 @ 987654326@ 方法。因此,实例变量受到保护。
但是,请注意容器管理的 @PersistenceContext 字段不是“共享”状态,因为容器实际上注入了一个代理对象。该代理EntityManager 上的每个方法调用都将委托给每个事务EntityManager。由于事务不是跨线程共享的,因此即使 bean 使用 @ConcurrencyManagement(BEAN) 而没有其他同步,它也是线程安全的。
【讨论】: