Java 8 引入了 Stream,位於 java.util.stream
包中。 Stream 是對象序列,類似於數組或集合,支持多種方法和聚合操作,包括過濾(Filter)、映射(Map)、歸約(Reduce)、限制(Limit)、匹配(Match) 和查找(Find) 。 這些操作不會修改原始數據源,而是創建新的 Stream 進行處理。 Stream 主要分為順序流 (Sequential Stream) 和並行流 (Parallel Stream) 兩種。本文將重點闡述兩者間的差異。
順序流使用單個線程處理流水線中的數據。順序流中的對象位於同一處理系統,並按順序排列,因此不會利用多核系統進行處理。
並行流利用多核處理器來提高程序性能。代碼通過並行流方法被分割成多個流,這些流在不同的內核上並行執行。最終結果合併後顯示。由於執行不受開發人員控制,結果可能無序。並行流可以通過以下方式使用:
Collection
接口包含 parallelStream()
方法,用於創建並行流。 BaseStream
接口包含 parallel()
方法,可用於將順序流轉換為並行流。 下表總結了 Java 中順序流和並行流的主要區別:
顺序流 | 并行流 |
---|---|
在计算机的单个内核上执行。 | 在计算机的多个内核上执行。 |
性能较慢。 | 性能较快。 |
执行过程中保持顺序。 | 执行过程中不保证顺序。 |
一次只能进行单个迭代。 | 由于在多个内核上执行,可以进行多个迭代。 |
每个迭代必须等待前一个迭代完成才能执行。 | 如果所有内核都繁忙,则流必须等待;否则,它们将同时执行而无需等待。 |
出错概率较低。 | 出错概率较高。 |
与平台无关。 | 依赖于平台。 |
Java 中的 Stream 主要分為順序流和並行流兩種。順序流按順序執行對像操作,結果有序,使用計算機的單個內核執行,性能較慢,但與平台無關。並行流使用計算機的多個內核執行,性能很快,但結果無序。
順序流與平台無關,因為它只使用單個內核執行代碼。並行流使用多個內核執行代碼,因此依賴於平台。
並行流更容易出錯,因為它在計算機的多個內核上運行,結果無序。順序流出錯概率較低,因為它只使用單個內核執行代碼。
在順序流中,一次只能進行一個迭代。下一個迭代必須等待當前迭代執行完成。在並行流中,迭代在不同的內核上同時工作。如果所有內核都繁忙,則迭代必須等待。
順序流在執行過程中保持順序,因為它只使用一個內核,並且每個迭代必須等待當前迭代完成執行。
並行流的性能更快,因為它使用多個內核執行。順序流只使用一個內核,因此性能較慢。
以上是Java中的平行和順序流之間的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!