0

当在类级别为 LockType READ 的单例容器管理会话 bean 中的 LockType WRITE 方法调用 LockType READ 的同一 bean 中的另一个方法时会发生什么。

@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
@Lock(LockType.READ)
public class EmployeBean implements Employee {

  @Lock(LockType.WRITE)
  public Employee update() {
   //update 
  }

  public void calculate () {
    //calculate and set 
  }
}

使用上面的bean,有这样的实现是否正确?当这个 update() 正在执行并且同时一些其他服务调用 calculate() 时会发生什么?服务会等到 update() 完成还是它还并行执行 calculate()?我相信如果它确实并行执行,它很有可能破坏数据或以数据不匹配告终。

计算方法可以设为私有,并且只能在受 WRITE 保护的方法下使用。这样可以确保不会因为并发请求而出现不匹配。

想知道在上述情况下处理并发请求的影响并遵循正确的方法。

4

0 回答 0