我想遍历一个巨大的数组,并执行一组需要很长时间的复杂指令。但是,如果超过30秒过去了,我希望它放弃。Java 8 Streams - 超时?
ex。
final long start = System.currentTimeMillis();
myDataStructure.stream()
.while(() -> System.currentTimeMillis() <= start + 30000)
.forEach(e ->
{
...
});
我想避免只说return
的forEach
里面调用,如果满足特定条件。
https://stackoverflow.com/questions/41392286/java-8-completablefuture-stream-and-timeouts这里是一个样本回答,也许它可以帮助你。 – utkusonmez
如果您正在计算副作用的变化并在之后应用(假设计算远比应用更昂贵),您可以使用特殊的“收集器”实现,该收集器在达到超时时停止收集。 – SpaceTrucker
相关:https://stackoverflow.com/questions/20746429/limit-a-stream-by-a-predicate –