我试图了解在 Google AppEngine 数据存储的竞争条件下会发生什么。我一直在使用 Objectify,所以我将在此处使用该符号。
@Cached
public class Car {
@Id
public Long id;
@Unindexed
public String owner = "C";
}
现在考虑我有两个试图同时修改owner
特定汽车的可运行文件。
Car myCar = ofy.get(Car.class, 10);
myCar.owner = "A"; // Other runnable uses "B"
ofy.put(myCar);
System.out.println(ofy.get(Car.class, 10).owner);
我认为在这种情况下,它不确定 Car(10) 是否将由“A”或“B”“拥有”,但不会报告错误。在将写入持久化到数据存储区之前,“失败者”将不清楚。printlns 的结果是什么?
如果我使用了事务,其中一个可运行对象(“失败者”)是否会引发异常?