Piszę program zakończenia serwera za pomocą Twittera Finlipsa. Nie używam pełnego stosu serwerów Twitter, tylko część, która umożliwia przetwarzanie asynchroniczne (tak Future, Function, itp.). Chcę przyszłości obiekty mają limity czasu, więc napisałem tak:Czas przyszły na Twitter nie dotyczy całego łańcucha FlatMap
Future<String> future = Future.value(some_input).flatMap(time_consuming_function1);
future.get(Duration.apply(5, TimeUnit.SECONDS));
time_consuming_function1
trwa dłużej niż 5 sekund. Ale future
nie traci czasu po 5 sekundach i czeka aż time_consuming_function1
skończy.
Myślę, że to dlatego, że future.get(timeout)
dba tylko o to, jak długo trwa tworzenie future
, a nie o cały łańcuch operacji. Czy istnieje sposób na przekroczenie limitu czasu całego łańcucha operacji?
Dzięki sschaef za edytowanie – stackoverflower
Czy moja odpowiedź jest niewystarczająca? –