-3
私はメソッドを持っています(例えばexecute())。レスポンスを返すのに10秒以上かかると再実行する必要があります。初めて取得する場合は、再度メソッドを実行します。それを達成する方法?
これを達成する方法を教えてください。
おかげ
私はメソッドを持っています(例えばexecute())。レスポンスを返すのに10秒以上かかると再実行する必要があります。初めて取得する場合は、再度メソッドを実行します。それを達成する方法?
これを達成する方法を教えてください。
おかげ
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();
}
これは問題を解決するとは思わない 私は意図した時間を超えている場合は3行目 –
Google:回線切断、再試行、タイムアウト、および指数バックオフ。これらの用語のそれぞれは、ユースケースに関連するものをよりよく理解するのに役立ちます。 – alfasin
未来があるなら、タイムアウトでgetを呼び出すことができます。 – assylias
@assylias は、Executor Serviceに関連しています。 参照または例を指摘してください –