Google App Engine创建后台线程异常

时间:2014-05-12 04:21:16

标签: java multithreading google-app-engine

我正在尝试使用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上无限期地运行后台线程?

1 个答案:

答案 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

请注意,此类后台任务只能在手动扩展实例上生成。