Java中並行流和順序流的區別


Java 8 中引入,幷包含在 java.util.stream 包中。它是一個物件序列,充當 陣列 或集合。流支援多種方法。此外,流還支援各種聚合操作,包括:

  • 過濾 (Filter)
  • 對映 (Map)
  • 歸約 (Reduce)
  • 限制 (Limit)
  • 匹配 (Match)
  • 查詢 (Find)

對流執行任何這些操作都不會影響源。相反,會建立一個新的流來應用這些操作。流有兩種型別:順序流和並行流。在本文中,我們將討論並行流和順序流之間的區別。

什麼是順序流?

順序流使用單個執行緒來處理管道。順序流的物件位於同一處理系統上,並排成同一流。因此,多核系統不會用於處理。

什麼是並行流?

並行流使用多核處理器,這有助於提高程式的效能。程式碼透過並行流方法被分成多個流。所有流都在不同的核心上並行執行。當需要顯示最終結果時,所有核心都會合並。由於執行不受開發人員控制,因此結果可能無序。並行流可以透過以下方式使用:

  • 集合介面 包含 parallelStream() 方法,可用於實現並行流。
  • BaseStream 介面包含 parallel() 方法,可應用於順序流。

順序流和並行流的區別

Java中的順序流和並行流有很多區別,我們可以在下表中看到。

順序流 並行流
順序流的執行在計算機的單個核心上完成。 並行流的執行在計算機的多個核心上完成。
順序流的效能較慢。 並行流的效能較快。
順序流的處理在執行過程中保持順序。 並行流的執行過程中不保持順序。
一次只能發生一次迭代。 由於流在多個核心上執行,因此可以發生多次迭代。
每次迭代必須等到前一次迭代執行完成後才能執行。 如果所有核心都處於繁忙狀態,則流必須等待,否則它們將同時執行而無需等待。
順序流不易出錯。 並行流更容易出錯。
它不依賴於平臺。 它依賴於平臺。

結論

Java中的流有兩種型別:順序流和並行流。順序流是在其中對物件的操作按順序執行的流。程式的結果是有序的。它使用計算機的單個核心進行執行。它的效能較慢,但它與平臺無關。並行流使用計算機的多個核心進行執行。此流的效能非常快,但結果並非有序的。

關於順序流與並行流的常見問題

1. 哪種流與平臺無關?

順序流與平臺無關,因為它只使用單個核心來執行程式碼。並行流使用多個核心執行程式碼,因此它與平臺相關。

2. 哪種流更容易出錯?

並行流更容易出錯,因為流在計算機的多個核心上執行。結果不是有序的。順序流出錯的可能性較小,因為它只使用單個核心來執行程式碼。

3. 在順序流和並行流中,迭代何時需要等待?

在順序流中,一次只能工作一個迭代。下一個迭代必須等到當前迭代的執行完成才能執行。在並行流中,迭代在不同的核心上同時工作。如果所有核心都處於繁忙狀態,則迭代必須等待。

4. 哪種流在執行過程中保持順序?

順序流在執行過程中保持順序。這是因為它只使用一個核心,並且每次迭代必須等到當前迭代完成執行。

5. 哪種流的效能更快?

並行流的效能更快,因為它使用多個核心進行執行。順序流只使用一個核心,因此其效能較慢。

更新於:2024年7月22日

瀏覽量:335

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告