我有一个后续问题: EJB 3.1 容器管理并发与同步
锁是仅防止对持久性上下文中的数据的并发访问等,还是还为私有字段提供同步?
最容易想象java.util.concurrent.ReadWriteLock
容器正在调用的 per-beanlock()
以及在orunlock()
上的方法调用,具体取决于为方法配置的内容。因此,实例变量受到保护。readLock()
writeLock()
@Lock
但是,请注意容器管理的@PersistenceContext
字段不是“共享”状态,因为容器实际上注入了一个代理对象。该代理上的每个方法调用EntityManager
都将委托给每个事务EntityManager
。由于事务不是跨线程共享的,因此即使 bean@ConcurrencyManagement(BEAN)
在没有其他同步的情况下使用也是线程安全的。