我想遍历一个巨大的数组并执行一组复杂的指令,这需要很长时间。但是,如果超过30秒,我希望它放弃。
例如
final long start = System.currentTimeMillis(); myDataStructure.stream() .while(() -> System.currentTimeMillis() <= start + 30000) .forEach(e -> { ... });
我想避免只return在forEach通话中说出是否满足特定条件。
return
forEach
与实际执行操作相比,如果在这种情况下迭代流或数组便宜,那么不仅仅使用谓词和筛选时间是否结束。
final long end = System.nanoTime() + TimeUnit.SECONDS.toNanos(30L); myDataStructure.stream() .filter(e -> System.nanoTime() <= end) .forEach(e -> { ... });
问题是您是否需要知道哪些元素已被处理。通过以上内容,您之后必须检查特定元素是否发生了副作用。