-1

我有一个带有开始/暂停按钮(控制和 xml 提取器)的网页,单击该按钮时,将执行以下 jquery 函数:

function start() {
    // Posts to the start servlet
    $.post("servlets/start", function(data) {
        update();
    });
}

我有一个 web.xml 文件,将 url 'servlets/start' 映射到一个名为 'StartServlet.java' 的 HttpServlet。这个 servlet 的 doPost 方法应该在一个新线程上启动一个 xml 提取器,或者,如果一个提取器已经在运行,它应该暂停它。就这些。doPost 方法只调用 startExtractor() ,如下所示。

    private void newExtractor() {
        ArrayList<URL> urls = null;
        try {
            String path = this.getServletContext().getRealPath(
                    "internalLinks.txt");
            urls = GlobalUtils.getLinks(path);
            extractor = new Extractor(urls);
            thread = new Thread(extractor);
            fillContextPool(extractor, false);
        } catch (IOException e) {
            System.out.println("Failed to start");
        }
    }

    private void startExtractor() {
        if (thread == null) {
            newExtractor();
            thread.run();
        } else {
            extractor.togglePause();
            fillContextPool(extractor, stopForced);
        }
    }  

问题是,直到提取器完成后,jquery 帖子才完成,这意味着在提取器完成之前无法再次单击该按钮;本质上使得无法真正暂停提取器。

关于如何在提取器启动时使帖子完成的任何想法,而不必等到它完成?

提前致谢!

4

1 回答 1

1

使用该start()方法启动一个线程。不是run()方法。

于 2012-05-25T12:00:11.093 回答