为了提高在Google App Engine中运行的Java程序的执行速度,我是否可以在运行时创建其他Java线程以利用数据中心中的空闲机器?
到目前为止,我发现了相互矛盾的数据。
答案 0 :(得分:1)
如果您主要关心的是改善执行时间,请查看Memcache和Tasks。它们可用于减少或避免读取或写入数据存储区或其他存储选项,获取URL,发送电子邮件等的延迟。如果您执行了许多可以并行运行的困难计算,请查看MapReduce API。
一旦从程序中删除所有延迟,就没有理由在单个请求中使用多个线程。
请注意,App Engine实例可以使用多线程同时执行多个请求,因此它们倾向于有效地使用分配的资源。要启用它,请参阅:
答案 1 :(得分:0)
如果您遇到需要多线程解决方案的问题,可以使用线程(如您在问题中包含的链接中所述)。
但是,根据您的推理("在数据中心使用闲置机器"),您似乎被误导了。因此,您不应该使用线程。您使用的是您支付的机器小时数而不是更多。只有当你告诉App Engine保留额外的空闲机器以便它不必启动一台额外的机器时,你的应用程序才能获得大量的使用率。
大多数情况下,除非您真正进行并行计算,否则您不需要在App Engine中使用多个线程。例如,数据存储区具有异步API,因此您可以并行执行多个数据存储区操作,而无需自己处理线程。
这有意义吗?