我讀了org.apache.nutch.parse.ParseUtil.runParser(Parser p, Content content)
的來源。方法cancel()和方法interrupt()做重複的工作嗎?
做這兩種方法的調用做同樣的事情:
說明1:
t.interrupt();
說明2:
task.cancel(true);
的org.apache.nutch.parse.ParseUtil.runParser(Parser p, Content content)
的來源是:
ParseCallable pc = new ParseCallable(p, content);
FutureTask<ParseResult> task = new FutureTask<ParseResult>(pc);
ParseResult res = null;
Thread t = new Thread(task);
t.start();
try {
res = task.get(MAX_PARSE_TIME, TimeUnit.SECONDS);
} catch (TimeoutException e) {
LOG.warn("TIMEOUT parsing " + content.getUrl() + " with " + p);
} catch (Exception e) {
task.cancel(true);
res = null;
t.interrupt();
} finally {
t = null;
pc = null;
}
return res;