java - 具有时间延迟的递归函数调用

标签 java multithreading web-services recursion scheduled-tasks

我有一个 Web 应用程序,我需要运行一个后台进程来访问 Web 服务,在收到响应后,它将等待几秒钟(比如 30 秒),然后再次访问该服务。响应数据可以从非常小到非常大不等,所以我不想在完成数据处理之前再次调用该过程。所以,它是一个有时间延迟的递归调用。我打算怎么做:

  1. 将 ContextListener 添加到网络应用。

  2. 在 contextIntialized() 方法上,调用 invokeWebService() 即调用 Web 服务的任意方法。

  3. 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/

相关文章:

java - 了解hibernate中依赖对象集合的限制

java - Java bean 的类型安全属性名称

java - NTLM 身份验证方案选择错误

java - 数据库中的 URL

java - 从 Nested HashMap 获取值到另一个 Map

java - 当目标数组大小不同时 System.arraycopy 的替代方法

c++ - pthread_cond_wait 和 pthread_mutex_lock 没有按预期工作

java - 我应该在 Future<?> 上调用 cancel(true) 还是我自己的 FutureTask

c++ - 如何使用 std::threads 将多维映射的引用传递给函数

web-services - Compact Framework - 无效 URI : Hostname could not be parsed