锁定时,Singleton Session Bean 调用顺序是否公平?
Will Singleton Session Bean invocation order be fair when locked?
当使用启用了容器管理并发的@Singleton 类型的 EJB 并且存在对 @Lock(LockType.WRITE) 注释方法的挂起写锁定时,@Lock(LockType.READ 的可能调用者) 方法按调用顺序排队?
换句话说,如果对读锁定方法的多次调用挂起一个写锁定调用程序,那么这些读锁定方法调用程序是否会按照调用到达的顺序完成调用(假设没有超时)?
我一直在对此进行测试,结果有些矛盾。
EJB 规范不保证单例会话 bean 锁的公平性,因此您不应该做任何假设。如果您的应用程序服务器做出一些保证,我想您可以依赖它,但您最好使用 @ConcurrencyManagement(BEAN)
并使用您自己的锁来确保公平。
当使用启用了容器管理并发的@Singleton 类型的 EJB 并且存在对 @Lock(LockType.WRITE) 注释方法的挂起写锁定时,@Lock(LockType.READ 的可能调用者) 方法按调用顺序排队?
换句话说,如果对读锁定方法的多次调用挂起一个写锁定调用程序,那么这些读锁定方法调用程序是否会按照调用到达的顺序完成调用(假设没有超时)?
我一直在对此进行测试,结果有些矛盾。
EJB 规范不保证单例会话 bean 锁的公平性,因此您不应该做任何假设。如果您的应用程序服务器做出一些保证,我想您可以依赖它,但您最好使用 @ConcurrencyManagement(BEAN)
并使用您自己的锁来确保公平。