GAE中的同步块



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

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

最新更新