<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 并行流 并行流就是一個把內容分成多個數據塊,并用不同的線程分別處理每個數據塊的流;可以通過對收集源調用parallelStream方法來把集合轉換為并行流; ### 并行流線程池 并行流內部使用了默認的ForkJoinPool,它默認的線程數量就是你的處理器數量,這個值是由Runtime.getRuntime\(\).available-Processors\(\)得到的; 但 是 你 可 以 通 過 系 統 屬 性 java.util.concurrent.ForkJoinPool.common.parallelism來改變線程池大小,如下所示: ``` System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism","12"); ``` 這是一個全局設置,因此它將影響代碼中所有的并行流。反過來說,目前還無法專為某個并行流指定這個值。一般而言,讓ForkJoinPool的大小等于處理器數量是個不錯的默認值,除非你有很好的理由,否則我們強烈建議你不要修改它。 ### 并行流使用注意事項 * 如果有疑問,測量。把順序流轉成并行流輕而易舉,但卻不一定是好事。我們在本節中已經指出,并行流并不總是比順序流快。此外,并行流有時候會和你的直覺不一致,所以在考慮選擇順序流還是并行流時,第一個也是最重要的建議就是用適當的基準來檢查其性能; * 留意裝箱。自動裝箱和拆箱操作會大大降低性能。Java8中有原始類型流(IntStream、LongStream、DoubleStream)來避免這種操作,但凡有可能都應該用這些流; * 有些操作本身在并行流上的性能就比順序流差。特別是limit和findFirst等依賴于元素順序的操作,它們在并行流上執行的代價非常大。例如,findAny會比findFirst性能好,因為它不一定要按順序來執行。你總是可以調用unordered方法來把有序流變成無序流。那么,如果你需要流中的n個元素而不是專門要前n個的話,對無序并行流調用limit可能會比單個有序流(比如數據源是一個List)更高效; * 還要考慮流的操作流水線的總計算成本。設N是要處理的元素的總數,Q是一個元素通過流水線的大致處理成本,則N\*Q就是這個對成本的一個粗略的定性估計。Q值較高就意味著使用并行流時性能好的可能性比較大; * 對于較小的數據量,選擇并行流幾乎從來都不是一個好的決定。并行處理少數幾個元素的好處還抵不上并行化造成的額外開銷; * 要考慮流背后的數據結構是否易于分解。例如,ArrayList的拆分效率比LinkedList高得多,因為前者用不著遍歷就可以平均拆分,而后者則必須遍歷。另外,用range工廠方法創建的原始類型流也可以快速分解; * 流自身的特點,以及流水線中的中間操作修改流的方式,都可能會改變分解過程的性能。例如,一個SIZED流可以分成大小相等的兩部分,這樣每個部分都可以比較高效地并行處理,但篩選操作可能丟棄的元素個數卻無法預測,導致流本身的大小未知; * 還要考慮終端操作中合并步驟的代價是大是小(例如Collector中的combiner方如果這一步代價很大,那么組合每個子流產生的部分結果所付出的代價就可能會超出通過并行流得到的性能提升。 ### 流的數據源和可分解性 ### ![](../assets/20180923172924001.png)
                  <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>

                              哎呀哎呀视频在线观看