我正在尝试使用Java在Google App Engine中运行一个长期运行的流程。 (基本上我需要类似守护程序线程的东西?或者只是无限期运行并且不会阻止UI但仍然可以与其他线程通信)
所以我试过了:
@SuppressWarnings("serial")
public class TestingAServlet extends HttpServlet {
public void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws IOException {
resp.setContentType("text/plain");
new Thread(new Runnable() {
@Override
public void run() {
try {
resp.getWriter().println("hi, from background thread");
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
System.out.println("done");
}
}
但我得到一个例外:
java.security.AccessControlException:access denied(“java.lang.RuntimePermission”“modifyThreadGroup”)
如何使用java在GAE上无限期地运行后台线程?
答案 0 :(得分:1)
AppEngine不允许使用传统线程。
但是,您可以使用Modules API生成后台任务: https://developers.google.com/appengine/docs/java/modules/#Java_Background_threads https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/ThreadManager
请注意,此类后台任务只能在手动扩展实例上生成。