2017-08-09 12 views
-3

私はメソッドを持っています(例えばexecute())。レスポンスを返すのに10秒以上かかると再実行する必要があります。初めて取得する場合は、再度メソッドを実行します。それを達成する方法?

これを達成する方法を教えてください。

おかげ

+2

Google:回線切断、再試行、タイムアウト、および指数バックオフ。これらの用語のそれぞれは、ユースケースに関連するものをよりよく理解するのに役立ちます。 – alfasin

+0

未来があるなら、タイムアウトでgetを呼び出すことができます。 – 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行目 –

関連する問題