我有一个向站点发出 HTTP 请求的应用程序,ant 然后检索响应,检查它们,如果包含特定关键字,则将 HTTP 请求和响应写入 XML 文件。此应用程序使用蜘蛛来绘制站点的所有 URL,然后发送请求(站点地图中的每个 URL 都被馈送到发送请求的单独线程)。这样我就无法知道所有请求何时发送。最后,我要求将 XML 文件转换为其他格式。因此,为了找出请求何时结束,我使用以下策略:
我将每个请求的时间存储在一个变量中(当一个新请求的发送时间晚于变量中的时间时,该变量会被更新)。另外我启动一个线程来监控这个时间,如果当前时间和变量中的时间相差超过1分钟,我知道请求的发送已经停止。我为此目的使用以下代码:
class monitorReq implements Runnable{
Thread t;
monitorReq(){
t=new Thread(this);
t.start();
}
public void run(){
while((new Date().getTime()-last_request.getTime()<60000)){
try{
Thread.sleep(30000);//Sleep for 30 secs before checking again
}
catch(IOException e){
e.printStackTrace();
}
}
System.out.println("Last request happened 1 min ago at : "+last_request.toString());
//call method for conversion of file
}
}
这种方法正确吗?或者有没有更好的方法可以实现同样的事情。