我想遍歷一個巨大的數組,並執行一組需要很長時間的複雜指令。但是,如果超過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 –