我有一个Web应用程序,我需要运行一个backgroung进程,该进程将打入Web服务,在收到响应后,它将等待几秒钟(例如30秒),然后再次打入该服务。响应数据可以从非常少到很大变化,因此我不想再次调用该过程,直到完成数据处理为止。因此,它具有时间延迟的递归调用。我打算怎么做:
invokeWebService()
{
//make request
//hit service
//get response
//process response
timeDelayInSeconds(30);
//recursive call
invokeWebService();
}
请建议我是否做对了。或与线程或调度程序一起使用。请用示例代码回答。
最佳答案
您可以使用 ScheduledExecutorService
, which is part of the standard JDK since 1.5:
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
Runnable r = new Runnable() {
@Override
public void run() {
invokeWebService();
}
};
scheduler.scheduleAtFixedRate(r, 0, 30, TimeUnit.SECONDS);