4

java.util.Spliterator当循环体为空时,有谁知道为什么实现使用 do-while 而不是 while 循环?例如,实现forEachRemaining是:

default void forEachRemaining(Consumer<? super T> action) {
    do { } while (tryAdvance(action));
}

他们为什么要使用

do { } while (tryAdvance(action));

代替

while(tryAdvance(action));

?

有什么我不知道的优点吗?

4

1 回答 1

-2

逻辑检查在 do{} 的主体之后执行。这可以通过多种方式使用,但与最后带有逻辑检查的 while 循环执行相同的操作。因为 do{} 是空的,线程将等待直到通知然后执行逻辑检查,而不是执行逻辑检查 then if true 等待。

于 2016-05-19T12:50:14.867 回答