我有一个 Web 应用程序,我需要运行一个后台进程来访问 Web 服务,在收到响应后,它将等待几秒钟(比如 30 秒),然后再次访问该服务。响应数据可以从非常小到非常大不等,所以我不想在完成数据处理之前再次调用该过程。所以,它是一个有时间延迟的递归调用。我打算怎么做:
将 ContextListener 添加到网络应用。
在 contextIntialized() 方法上,调用 invokeWebService() 即调用 Web 服务的任意方法。
invokeWebService 看起来像:
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);
关于java - 具有时间延迟的递归函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10170036/