Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Synchronization Java、EJB、私有字段的锁同步?_Synchronization_Locking_Ejb 3.1 - Fatal编程技术网

Synchronization Java、EJB、私有字段的锁同步?

Synchronization Java、EJB、私有字段的锁同步?,synchronization,locking,ejb-3.1,Synchronization,Locking,Ejb 3.1,我有一个后续问题要问: 锁是否仅阻止对持久性上下文中的数据的并发访问,等等?还是它还为私有字段提供同步?最容易想象的是,容器在其上调用Lock()和unlock()的是一个per beanjava.util.concurrent.ReadWriteLock根据为方法配置的@Lock,在readLock()或writeLock()上调用方法。因此,实例变量受到保护 但是,请注意,容器管理的@PersistenceContext字段不是“共享”状态,因为容器实际上注入了代理对象。该代理Entity

我有一个后续问题要问:


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

最容易想象的是,容器在其上调用
Lock()
unlock()的是一个per bean
java.util.concurrent.ReadWriteLock
根据为方法配置的
@Lock
,在
readLock()
writeLock()
上调用方法。因此,实例变量受到保护


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

最容易想象的是,存在一个每个bean
java.util.concurrent.ReadWriteLock
,容器在其上调用
lock()
unlock())
根据为方法配置的
@Lock
,在
readLock()
writeLock()
上调用方法。因此,实例变量受到保护

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