国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java8 parallelStream并行流

IT那活兒 / 524人閱讀
Java8 parallelStream并行流

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!!


背景介紹

在我們開發的過程中,會遇到數據處理的情況,那么經常會用到for循環、java8的流處理等。
對于小數據量來說,for循環已經滿足了需求,但是對于大數據量來說,for循環在處理數據的效率上就已經顯得非常吃力。

在java8的流處理中有這么一個方法:parallelStream。初次接觸就發現這個方法處理大數據時非常好用,下面就來分享一下使用詳情。


對比結果

我們用幾組數據對比一下for循環,java8 stream和 parallelStream處理數據的耗時。
  • For循環
  • Java8 stream和parallelStream

從上圖我們可以看出,在相同的數據下,增強型for循環用時最長;java8 stram耗時次之,java8 parallelStream耗時最短。Stream在寫法上較for循環精練很多,并且效率上也有相應的提升。而parallelStream其實是Stream的升級版,stream是串行操作,而parallelStream支持并行操作,從而提高程序運行效率。


深入了解

Java8的paralleStream用fork/join框架提供了并發執行能力。研究源碼(這里就不細說源碼了),通過paralleStream的foreach我們找到ForEachTask 類,我們可以用圖形解釋一下其所繼承/實現的類之間的關系。

相信經常使用線程的朋友看到這里基本我們理解到paralleStream的原理了,其使用到future來合并多線程異步結果。
正如fork/join框架的思想,這里我用圖形簡單描述一下。
Fork/Join框架的基本思想就是將一個大任務分解(Fork)成一系列子任務,子任務可以繼續往下分解,當多個不同的子任務都執行完成后,可以將它們各自的結果合并(Join)成一個大結果,最終合并成大任務的結果,即第一步是拆分,第二步是分開運算,第三步是合并。
這樣我們就清楚了paralleStream效率提升的密碼了。

總 結

1. 在大數據量的情況下,我們優先考慮paralleStream,數據量小用paralleStream完全沒必要,而且耗內存。
2. 在使用paralleStream并行流的時候是無法保證元素的順序的,也就是即使你用了同步集合也只能保證元素都正確但無法保證其中的順序。


本文作者:段席超(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129156.html

相關文章

  • Java8(stream)操作

    摘要:串行與并行可以分為串行與并行兩種,串行流和并行流差別就是單線程和多線程的執行。返回串行流返回并行流和方法返回的都是類型的對象,說明它們在功能的使用上是沒差別的。唯一的差別就是單線程和多線程的執行。 Stream是什么 Stream是Java8中新加入的api,更準確的說: Java 8 中的 Stream 是對集合(Collection)對象功能的增強,它專注于對集合對象進行各種非常便...

    yacheng 評論0 收藏0
  • 樂字節-Java8新特性之Stream(上)

    摘要:需要注意的是很多流操作本身就會返回一個流,所以多個操作可以直接連接起來,如下圖這樣,操作可以進行鏈式調用,并且并行流還可以實現數據流并行處理操作。為集合創建并行流。 上一篇文章,小樂給大家介紹了《Java8新特性之方法引用》,下面接下來小樂將會給大家介紹Java8新特性之Stream,稱之為流,本篇文章為上半部分。 1、什么是流? Java Se中對于流的操作有輸入輸出IO流,而Jav...

    dingda 評論0 收藏0
  • java8系列」式編程Stream

    摘要:前言系列神秘的系列神奇的函數式接口繼上兩篇之后,本文已經系列的第三篇了。相反,他們會返回一個持有結果的新。操作是延遲執行的。截斷流,使其元素不超過給定數量。返回流中元素總數。返回流中最大值。 前言 「Java8系列」神秘的Lambda「Java8系列」神奇的函數式接口繼上兩篇之后,本文已經java8系列的第三篇了。本篇文章比較長,但我希望大家都能認真讀完。讀不完可以先收藏,在找時間讀。...

    bovenson 評論0 收藏0
  • Stream與Lambda表達式(一) 雜談

    摘要:一流轉換為數組集合陳楊將流轉換為數組將流轉換為數組將流轉換為集合將流轉換為集合解析 一、流 轉換為數組、集合 package com.java.design.java8.Stream; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context...

    Harpsichord1207 評論0 收藏0
  • Java8-

    摘要:因此,使用并行流需要考慮以下幾點數據量將問題分解之后并行化處理,再將結果合并會帶來額外的開銷。 目錄 簡介 用法 例子 注意點 一. 簡介 流是Java8引入的一個新特性,提供了對集合元素一系列便捷的操作,可以用很少的代碼實現復雜的功能。流有兩大類,分別是對象流(Stream),基本數據流(IntStream、LongStream、DoubleStream)。 二.用法 流的使用通...

    whinc 評論0 收藏0
  • Java8實戰》-第四章讀書筆記(引入Stream)

    摘要:內部迭代與使用迭代器顯式迭代的集合不同,流的迭代操作是在背后進行的。流只能遍歷一次請注意,和迭代器類似,流只能遍歷一次。 流(Stream) 流是什么 流是Java API的新成員,它允許你以聲明性方式處理數據集合(通過查詢語句來表達,而不是臨時編寫一個實現)。就現在來說,你可以把它們看成遍歷數據集的高級迭代器。此外,流還可以透明地并行處理,你無需寫任何多線程代碼了!我會在后面的筆記中...

    _ivan 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<