Java LockType.Write方法调用LockType.READ方法时会发生什么情况

Java LockType.Write方法调用LockType.READ方法时会发生什么情况,java,concurrency,session-bean,Java,Concurrency,Session Bean,当在类级别为LockType READ的单例容器管理会话bean中的LockType WRITE方法调用同一bean中的另一个LockType READ方法时会发生什么情况 @Singleton @ConcurrencyManagement(ConcurrencyManagementType.CONTAINER) @Lock(LockType.READ) public class EmployeBean implements Employee { @Lock(LockType.WRITE)

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

@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,这样的实现正确吗?在执行此更新的同时,其他服务调用calculate时会发生什么情况?服务会等到更新完成,还是同时并行执行calculate?我相信如果它并行执行,则很有可能损坏数据或导致数据不匹配

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


我想知道它的影响,并在处理上述并发请求时遵循正确的方法。

我错误地理解为它只锁定对该方法的访问,而不是bean。谢谢,现在清楚了。