Chciałbym zapętlić się nad ogromną tablicą i wykonać skomplikowany zestaw instrukcji, który zajmuje dużo czasu. Jednakże, jeśli minęło więcej niż 30 sekund, chcę się poddać.Strumienie Java 8 - limit czasu?
np.
final long start = System.currentTimeMillis();
myDataStructure.stream()
.while(() -> System.currentTimeMillis() <= start + 30000)
.forEach(e ->
{
...
});
chcę uniknąć po prostu mówiąc return
wewnątrz zaproszenia forEach
gdy pewien warunek jest spełniony.
https://stackoverflow.com/questions/41392286/java-8-completablefuture-stream-and-timeouts Oto próbka odpowiedź, może ci pomaga. – utkusonmez
Jeśli obliczałeś zmiany efektów ubocznych i stosowałeś je później (zakładając, że obliczenia są znacznie droższe niż stosowanie), możesz być w stanie użyć specjalnej implementacji 'Collector', która przestaje zbierać po osiągnięciu limitu czasu. – SpaceTrucker
Powiązane: https://stackoverflow.com/questions/20746429/limit-a-stream-by-a-predicate –