2017-08-09 50 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行,如果它超過預定的時間 –

相關問題