Java LockType.Write方法调用LockType.READ方法时会发生什么情况
当在类级别为LockType READ的单例容器管理会话bean中的LockType WRITE方法调用同一bean中的另一个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)
@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。谢谢,现在清楚了。