我有一个带有开始/暂停按钮(控制和 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 帖子才完成,这意味着在提取器完成之前无法再次单击该按钮;本质上使得无法真正暂停提取器。
关于如何在提取器启动时使帖子完成的任何想法,而不必等到它完成?
提前致谢!