<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## [終端操作](https://lingcoder.gitee.io/onjava8/#/book/14-Streams?id=%e7%bb%88%e7%ab%af%e6%93%8d%e4%bd%9c) 以下操作將會獲取流的最終結果。至此我們無法再繼續往后傳遞流。可以說,終端操作(Terminal Operations)總是我們在流管道中所做的最后一件事。 ook/14-Streams?id=%e5%be%aa%e7%8e%af) * `forEach(Consumer)`常見如`System.out::println`作為**Consumer**函數。 * `forEachOrdered(Consumer)`: 保證`forEach`按照原始流順序操作。 第一種形式:無序操作,僅在引入并行流時才有意義。在[并發編程](https://lingcoder.gitee.io/onjava8/#/24-Concurrent-Programming)章節之前我們不會深入研究這個問題。這里簡單介紹下`parallel()`:可實現多處理器并行操作。實現原理為將流分割為多個(通常數目為 CPU 核心數)并在不同處理器上分別執行操作。因為我們采用的是內部迭代,而不是外部迭代,所以這是可能實現的。 `parallel()`看似簡單,實則棘手。更多內容將在稍后的[并發編程](https://lingcoder.gitee.io/onjava8/#/24-Concurrent-Programming)章節中學習。 下例引入`parallel()`來幫助理解`forEachOrdered(Consumer)`的作用和使用場景。代碼示例: ~~~ // streams/ForEach.java import java.util.*; import java.util.stream.*; import static streams.RandInts.*; public class ForEach { static final int SZ = 14; public static void main(String[] args) { rands().limit(SZ) .forEach(n -> System.out.format("%d ", n)); System.out.println(); rands().limit(SZ) .parallel() .forEach(n -> System.out.format("%d ", n)); System.out.println(); rands().limit(SZ) .parallel() .forEachOrdered(n -> System.out.format("%d ", n)); } } ~~~ 輸出結果: ~~~ 258 555 693 861 961 429 868 200 522 207 288 128 551 589 551 861 429 589 200 522 555 693 258 128 868 288 961 207 258 555 693 861 961 429 868 200 522 207 288 128 551 589 ~~~ 為了方便測試不同大小的流,我們抽離出了`SZ`變量。然而即使`SZ`值為14也產生了有趣的結果。在第一個流中,未使用`parallel()`,因此以元素從`rands()`出來的順序輸出結果。在第二個流中,引入`parallel()`,即便流很小,輸出的結果的順序也和前面不一樣。這是由于多處理器并行操作的原因,如果你將程序多運行幾次,你會發現輸出都不相同,這是多處理器并行操作的不確定性造成的結果。 在最后一個流中,同時使用了`parallel()`和`forEachOrdered()`來強制保持原始流順序。因此,對非并行流使用`forEachOrdered()`是沒有任何影響的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看