2017-08-09 47 views
-3

我有一个方法(如execute()),如果它需要超过10秒(每说)返回我需要重新执行它的响应。如果第一次需要时间,则要再次运行该方法。如何实现它?

请帮助我如何实现这一目标?

感谢

+2

Google:断路,重试,超时和指数退避。这些术语中的每一个都将帮助您更好地理解与您的使用案例相关的内容。 – alfasin

+0

如果你有未来,你可以打电话过夜。 – assylias

+0

@assylias 是否与Executor Service有关。 请指点我参考或示例 –

回答

0

喜欢的东西

Object response; 
start = System.currentTimeMillis(); 
response = execute(); 
if (System.currentTimeMillis() - start > 10000) { 
    response = execute(); 
} 

?或

Object get() { 
    ExecutorService executor = Executors.newSingleThreadExecutor(); 
    Future<Object> response = executor.submit(() -> { 
    return execute(); 
    }); 
    executor.shutdown(); 
    executor.awaitTermination(10, TimeUnit.SECONDS); 
    if (executor.isTerminated()) { 
    return response.get(); 
    } 
    executor.shutdownNow(); 
    return get(); 
} 
+0

我怀疑这会解决问题 我必须杀死第3行,如果它超过预定的时间 –

相关问题