나는 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;