【发布时间】:2013-04-30 02:51:47
【问题描述】:
如果这是一个明显的问题,请原谅我,但我从上到下阅读了documentation,我仍然不确定这个问题的答案是什么:
如果我有一个读取计数器编号并将其递增的数据存储事务,我能否确定 2 个并行 servlet 不会相互交错?换句话说,文档只说事务要么失败要么自动成功,但并没有说事务为其他servlet锁定数据,那么当2个servlet同时访问同一个实体时会发生什么?
如果事务确实不是线程安全的,我应该在访问共享数据存储计数器时只使用synchronized 吗?
【问题讨论】:
-
synchronized 仅在单个 JVM 中(大致)有效,并且在 AppEngine 启动多个 JVM 来为您的应用程序提供服务时无济于事。您当前的交易代码看起来如何?您希望有多少查询会出现在您的柜台上?可能值得看看developers.google.com/appengine/articles/sharding_counters