Java,EJB,Lock - 私有字段的同步?

时间:2012-05-17 11:37:16

标签: synchronization locking ejb-3.1

我有一个后续问题: EJB 3.1 container managed concurrency vs. synchronized

Lock是否仅阻止对持久性上下文等内的数据进行并发访问,还是为私有字段提供同步?

1 个答案:

答案 0 :(得分:1)

最简单的想象是,容器在java.util.concurrent.ReadWriteLocklock()上的方法调用周围调用unlock()readLock()的每个bean writeLock() {1}},具体取决于方法的已配置@Lock。因此,实例变量受到保护。

但是,请注意,容器管理的@PersistenceContext字段不是“共享”状态,因为容器实际上注入了代理对象。对该代理EntityManager的每个方法调用都将委托给每个事务EntityManager。由于事务不是跨线程共享的,因此即使bean使用@ConcurrencyManagement(BEAN)而没有其他同步,它也是线程安全的。