如果这是一个明显的问题,请原谅我,但我从上到下阅读了文档,我仍然不确定这个问题的答案是什么:
如果我有一个读取计数器编号并递增它的数据存储事务,我可以确定 2 个并行 servlet 不会相互交错吗?换句话说,文档只说事务要么自动失败要么成功,但并没有说事务为其他 servlet 锁定数据,那么当 2 个 servlet 同时访问同一个实体时会发生什么?
如果事务确实不是线程安全的,我应该只synchronized
在访问共享数据存储计数器时使用吗?
如果这是一个明显的问题,请原谅我,但我从上到下阅读了文档,我仍然不确定这个问题的答案是什么:
如果我有一个读取计数器编号并递增它的数据存储事务,我可以确定 2 个并行 servlet 不会相互交错吗?换句话说,文档只说事务要么自动失败要么成功,但并没有说事务为其他 servlet 锁定数据,那么当 2 个 servlet 同时访问同一个实体时会发生什么?
如果事务确实不是线程安全的,我应该只synchronized
在访问共享数据存储计数器时使用吗?
只要您为具有共同祖先的实体写入事务,事务就是“线程安全的”。
看看 GAE 低级数据存储 API,一旦您了解了实体的工作原理,它就会非常简单。
https://developers.google.com/appengine/docs/java/datastore/entities