GAE中的同步块

时间:2014-02-12 04:27:22

标签: java google-app-engine servlets

我在GAE中运行了一个应用。每隔几分钟就有一个时间触发的2个cron servlet。两者都检索并更新相同的存储记录。所以我添加了Synchronized块来将几乎整个处理逻辑包含在两个servlet中。但是,根据日志中的时间,当它们位于不同的JVM中时,它们的流仍然混合在一起。看起来像Synchronized块只在它们位于同一个JVM中时才会保护它。我对吗?如果是这样,如何在GAE中进行并发处理?请帮忙。

1 个答案:

答案 0 :(得分:1)

你是对的 - 同步块只能在一个进程中工作。 AppEngine cron servlet在云中的任意数量的服务器上并发执行。您应该重新设计cron作业中的互斥以使用Datastore Transactions。由于此类cron任务可能导致长时间运行,因此使用Task Queues管理繁重的处理通常很有用。