フォローアップの質問があります: EJB3.1コンテナ管理の同時実行と同期
ロックは、永続コンテキストなど内のデータへの同時アクセスを防ぐだけですか、それともプライベートフィールドの同期も提供しますか?
フォローアップの質問があります: EJB3.1コンテナ管理の同時実行と同期
ロックは、永続コンテキストなど内のデータへの同時アクセスを防ぐだけですか、それともプライベートフィールドの同期も提供しますか?
java.util.concurrent.ReadWriteLock
コンテナが呼び出しているlock()
Beanごとに、メソッドの構成に応じて、またはunlock()
のいずれかのメソッド呼び出しの周囲にあることを想像するのが最も簡単です。したがって、インスタンス変数は保護されます。readLock()
writeLock()
@Lock
ただし、@PersistenceContext
コンテナは実際にプロキシオブジェクトを挿入するため、コンテナ管理フィールドは「共有」状態ではないことに注意してください。そのプロキシでの各メソッド呼び出しは、EntityManager
トランザクションごとに委任されEntityManager
ます。トランザクションはスレッド間で共有されないため、Beanが@ConcurrencyManagement(BEAN)
他の同期なしで使用している場合でも、スレッドセーフです。