当使用启用了容器管理的并发的@Singleton类型的EJB并且对@Lock(LockType.WRITE)带注释的方法存在挂起的写锁定时,@ Lock(LockType.READ)方法的调用者可能会按顺序排队调用?
换句话说,如果读取锁定方法的多个调用等待写入锁定的调用者,那些读取锁定方法调用者是否会按照调用到达的顺序(假设没有超时发生)来调用它们?
我一直在测试这个并且结果有点矛盾。
答案 0 :(得分:2)
EJB规范不保证单例会话bean锁定公平性,因此您不应做出任何假设。如果您的应用程序服务器提供了一些保证,我猜您可以依赖它,但您可能最好使用@ConcurrencyManagement(BEAN)
并使用自己的锁来确保公平性。