java中如何设置文档对象的解析持续时间限制

java中如何设置文档对象的解析持续时间限制,java,jtidy,Java,Jtidy,我正在java中使用Jtidy解析器 URL url = new URL("www.yahoo.com"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); InputStream in = conn.getInputStream(); Tidy tidy = new Tidy(); Document doc = tidy.parseDOM(in, null); 当我谈到这个语句时,doc

我正在java中使用Jtidy解析器

  URL url = new URL("www.yahoo.com");
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  InputStream in = conn.getInputStream();
  Tidy tidy = new Tidy();
  Document doc = tidy.parseDOM(in, null);

当我谈到这个语句时,
documentdoc=tidy.parseDOM(in,null),解析页面花费的时间太长,因此我想设置document对象的时间限制。请帮助我,如何设置时间。

您可以使用
java.util.Executors
框架并向其提交有时间限制的任务

下面的一些代码演示了这一点:

// Note that these variables must be declared final to be accessible to task
final InputStream in = conn.getInputStream();
final Tidy tidy = new Tidy();

ExecutorService service = Executors.newSingleThreadExecutor();
// Create an anonymous class that will be submitted to the service and returns your result
Callable<Document> task = new Callable<Document>() {
    public Document call() throws Exception {
        return tidy.parseDOM(in, null);
    }
};
Future<Document> future = service.submit(task);
// Future.get() offers a timed version that may throw a TimeoutException
Document doc = future.get(10, TimeUnit.SECONDS);
//请注意,这些变量必须声明为final才能被任务访问
final InputStream in=conn.getInputStream();
最终整理=新整理();
ExecutorService=Executors.newSingleThreadExecutor();
//创建将提交到服务并返回结果的匿名类
可调用任务=新的可调用任务(){
公共文档调用()引发异常{
返回tidy.parseDOM(in,null);
}
};
Future=service.submit(任务);
//Future.get()提供了一个可能引发TimeoutException的定时版本
Document doc=future.get(10,时间单位:秒);

你确定是整理慢了吗?而不是输入流读取?为什么不使用
conn.setConnectTimeout()
设置超时?