【发布时间】:2012-04-29 15:43:11
【问题描述】:
既然 Appengine 不允许 java 多线程,那么我们如何将现有的多线程代码迁移到平台上呢?
例如我有以下代码:
Thread t = new Thread() {
public boolean alive = true;
public void run() {
while (alive) {
try {
Thread.sleep(5000);
getNewNotifications();
} catch (InterruptedException e) {
// Do nothing
} catch (IOException e) {
}
}
}
};
t.start()
函数 getNewNotification() 执行了一些 Rest/HTTP 调用,其中可能包括一些可能无限期返回的其他进程。我已经阅读了Task Queue 是解决方案,但是我们如何将这个简单的代码转换为 App 引擎友好的代码?
上面的代码是如何使用任务队列实现的?例如每五秒调用一次getNewNotifications()。
该函数将从服务器获取一些结果,解析结果,然后根据结果执行它需要执行的活动/工作。
【问题讨论】:
-
Eelke 的后端建议是合理的,但请考虑是否有一种方法可以使此事件驱动,而不是轮询。只在有工作要做时才做事会节省大量资源。