锁定时,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) 并使用您自己的锁来确保公平。