Google App Engine Java程序并发

时间:2014-05-10 14:48:48

标签: java multithreading google-app-engine

为了提高在Google App Engine中运行的Java程序的执行速度,我是否可以在运行时创建其他Java线程以利用数据中心中的空闲机器?

到目前为止,我发现了相互矛盾的数据。

2 个答案:

答案 0 :(得分:1)

如果您主要关心的是改善执行时间,请查看Memcache和Tasks。它们可用于减少或避免读取或写入数据存储区或其他存储选项,获取URL,发送电子邮件等的延迟。如果您执行了许多可以并行运行的困难计算,请查看MapReduce API。

一旦从程序中删除所有延迟,就没有理由在单个请求中使用多个线程。

请注意,App Engine实例可以使用多线程同时执行多个请求,因此它们倾向于有效地使用分配的资源。要启用它,请参阅:

https://developers.google.com/appengine/docs/java/config/appconfig#Java_appengine_web_xml_Using_concurrent_requests

答案 1 :(得分:0)

如果您遇到需要多线程解决方案的问题,可以使用线程(如您在问题中包含的链接中所述)。

但是,根据您的推理("在数据中心使用闲置机器"),您似乎被误导了。因此,您不应该使用线程。您使用的是您支付的机器小时数而不是更多。只有当你告诉App Engine保留额外的空闲机器以便它不必启动一台额外的机器时,你的应用程序才能获得大量的使用率。

大多数情况下,除非您真正进行并行计算,否则您不需要在App Engine中使用多个线程。例如,数据存储区具有异步API,因此您可以并行执行多个数据存储区操作,而无需自己处理线程。

这有意义吗?