最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java多線(xiàn)程批量處理百萬(wàn)級(jí)的數(shù)據(jù)方法示例

 更新時(shí)間:2025年02月15日 09:30:14   作者:弗拉唐  
這篇文章主要介紹了java多線(xiàn)程批量處理百萬(wàn)級(jí)的數(shù)據(jù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java多線(xiàn)程具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一,對(duì)Excel表中兩個(gè)表數(shù)據(jù)的讀取

創(chuàng)建readSheet方法,參數(shù)為所需讀取Excel表的路徑和索引,這個(gè)索引就是在文件中兩個(gè)表的索引(分別為0和1)

方法步驟:

1.使用字節(jié)流讀取Excel表,通過(guò)getSheetAt(0)方法獲取第一個(gè)表格,也就是負(fù)責(zé)人表

2.接著通過(guò)getRow()方法獲取第一行的數(shù)據(jù),也就是表頭

3.通過(guò)for循環(huán)遍歷第一行到最后一行的數(shù)據(jù),這時(shí)候需要一個(gè)list集合來(lái)接收數(shù)據(jù)

4.創(chuàng)建一個(gè)泛型為Map<String ,String>的List集合接收上面的map數(shù)據(jù)

5.遍歷得到每一行的每一個(gè)單元格,也就是每一個(gè)值

5.1:headerRow.getCell(cell.getColumnIndex()).getStringCellValue():從表頭行(第0行)獲取當(dāng)前單元格對(duì)應(yīng)的列名

5.2: String cellValue = getCellValue(cell);獲取單元格的值

5.3:rowMap.put(columnName,cellValue)添加數(shù)據(jù)到map集合

6.最后把map集合添加到list集合

兩個(gè)表格,索引對(duì)應(yīng)0和1

二:拆分集合

因?yàn)闃I(yè)主信息太多,所以需要進(jìn)行拆分

步驟:

1.方法中的chunkSize為所拆分的大小,也就是多少條數(shù)據(jù)為一部分,本條案例用的是1000條數(shù)據(jù)為一塊

2.使用了subList()方法將i從0到改模塊大小1000條數(shù)據(jù)添加到parts列表里面(使用Math.min()方法比較整個(gè)表的大小和模塊的大小,選擇更小的,防止報(bào)錯(cuò))

三:多線(xiàn)程驗(yàn)證拆分的數(shù)據(jù),驗(yàn)證數(shù)據(jù)的項(xiàng)目、樓棟、單元是否存在在第一個(gè)集合,這里使用了線(xiàn)程池,最后合并結(jié)果

步驟:

1.先使用Executors.newFixedThreadPool 創(chuàng)建一個(gè)固定大小的線(xiàn)程池。這里只指明了一個(gè)核心線(xiàn)程數(shù)量的參數(shù)Runtime.getRuntime().availableProcessors()

2.遍歷步驟二中拆分到的每一個(gè)數(shù)據(jù)模塊,每一個(gè)模塊都使用submit()方法提交一個(gè)任務(wù)給線(xiàn)程池

3.遍歷每一個(gè)模塊中的每一行數(shù)據(jù)row,調(diào)用自己創(chuàng)建的existsInFirstSheet()方法來(lái)檢查數(shù)據(jù)row是否在負(fù)責(zé)人(firstSheetData)表格中存在

4.創(chuàng)建一個(gè)list列表validData,如果存在就添加到列表中,返回validData

5.創(chuàng)建一個(gè)列表futures,將每一個(gè)模塊的validData數(shù)據(jù)添加到列表中,最后返回futures

6.existsInFirstSheet()方法:

檢查row是否在負(fù)責(zé)人(firstSheetData)表格中存在

步驟:

1.遍歷 firstSheetData 列表中的每一行數(shù)據(jù)。

2.檢查當(dāng)前行的 "項(xiàng)目"、"樓棟" 和 "單元" 字段是否與 row 的對(duì)應(yīng)字段相等。

3.如果相等,則將 firstSheetRow 中的 "負(fù)責(zé)人" 字段值賦給 row,并返回 true。

4.如果遍歷完所有行都沒(méi)有找到匹配項(xiàng),則返回 false

四:將存在的業(yè)主信息結(jié)果輸出到一個(gè)新的Excel中,以負(fù)責(zé)人名稱(chēng)為工作表名稱(chēng),將對(duì)應(yīng)的業(yè)主數(shù)據(jù)分離到不同的工作表

步驟:

1.先對(duì)futures列表進(jìn)行遍歷,然后創(chuàng)建一個(gè)mergedData列表,把所有的數(shù)據(jù)都添加到這個(gè)列表中

2.將合并的結(jié)果validatedData重新寫(xiě)入另一個(gè)Excel表格

步驟:

2.1:遍歷合并結(jié)果每一行,獲取負(fù)責(zé)人名稱(chēng),并進(jìn)行判斷是否為null,如果不為null再添加到

新創(chuàng)建的Set集合responsiablePersons中

2.2:遍歷負(fù)責(zé)人集合,每個(gè)負(fù)責(zé)人創(chuàng)建一個(gè)表格,同時(shí)也需要判斷是否為null

2.3:創(chuàng)建的表格以負(fù)責(zé)人的名字進(jìn)行命名

2.4:初始化索引為0,遍歷Set集合中所有的鍵,得到表頭數(shù)據(jù)

2.5:再對(duì)合并的結(jié)果進(jìn)行遍歷,判斷負(fù)責(zé)人與person值是否相同,相同就遍歷所有鍵值對(duì),最后寫(xiě)進(jìn)Excel表格中

總結(jié) 

到此這篇關(guān)于java多線(xiàn)程批量處理百萬(wàn)級(jí)的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)java批量處理百萬(wàn)級(jí)數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java中CountDownLatch的用法

    詳解Java中CountDownLatch的用法

    這篇文章主要為大家詳細(xì)介紹了Java中CountDownLatch類(lèi)的用法,本文通過(guò)一些簡(jiǎn)單的示例進(jìn)行了簡(jiǎn)單介紹,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-05-05
  • Java自定義Spring配置標(biāo)簽

    Java自定義Spring配置標(biāo)簽

    這篇文章主要介紹了Java自定義Spring配置標(biāo)簽,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-08-08
  • java對(duì)接支付寶支付接口簡(jiǎn)單步驟記錄

    java對(duì)接支付寶支付接口簡(jiǎn)單步驟記錄

    最近項(xiàng)目APP需要接入微信、支付寶支付功能,在分配開(kāi)發(fā)任務(wù)時(shí),聽(tīng)說(shuō)微信支付接口比支付寶支付接口要難實(shí)現(xiàn),這篇文章主要給大家介紹了關(guān)于java對(duì)接支付寶支付接口的簡(jiǎn)單步驟,需要的朋友可以參考下
    2024-05-05
  • java中有無(wú)參數(shù)和返回值的方法詳解

    java中有無(wú)參數(shù)和返回值的方法詳解

    這篇文章主要介紹了java中有無(wú)參數(shù)和返回值的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • RestTemplate如何通過(guò)HTTP?Basic?Auth認(rèn)證示例說(shuō)明

    RestTemplate如何通過(guò)HTTP?Basic?Auth認(rèn)證示例說(shuō)明

    這篇文章主要為大家介紹了RestTemplate如何通過(guò)HTTP?Basic?Auth認(rèn)證的示例說(shuō)明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • 在idea環(huán)境下構(gòu)建springCloud項(xiàng)目

    在idea環(huán)境下構(gòu)建springCloud項(xiàng)目

    本篇文章主要介紹了在idea環(huán)境下構(gòu)建springCloud項(xiàng)目,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • AsyncConfigurerSupport自定義異步線(xiàn)程池處理異常

    AsyncConfigurerSupport自定義異步線(xiàn)程池處理異常

    這篇文章主要為大家介紹了AsyncConfigurerSupport自定義異步線(xiàn)程池處理異常詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Java實(shí)現(xiàn)經(jīng)典游戲超級(jí)瑪麗的示例代碼

    Java實(shí)現(xiàn)經(jīng)典游戲超級(jí)瑪麗的示例代碼

    在你的童年記憶里,是否有一個(gè)蹦跳、頂蘑菇的小人?本文將用java語(yǔ)言實(shí)現(xiàn)經(jīng)典游戲《超級(jí)瑪麗》,文中采用了swing技術(shù)進(jìn)行了界面化處理,需要的可以參考一下
    2022-02-02
  • java使用@Scheduled注解執(zhí)行定時(shí)任務(wù)

    java使用@Scheduled注解執(zhí)行定時(shí)任務(wù)

    這篇文章主要給大家介紹了關(guān)于java使用@Scheduled注解執(zhí)行定時(shí)任務(wù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解jvm對(duì)象的創(chuàng)建和分配

    詳解jvm對(duì)象的創(chuàng)建和分配

    這篇文章主要介紹了jvm對(duì)象的創(chuàng)建和分配的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-03-03

最新評(píng)論

吕梁市| 孝感市| 九江县| 阳西县| 抚松县| 天等县| 安图县| 建水县| 嘉荫县| 开江县| 徐州市| 甘谷县| 翁源县| 景谷| 申扎县| 江安县| 襄汾县| 景德镇市| 山阴县| 博爱县| 岫岩| 会东县| 苏尼特右旗| 博湖县| 曲周县| 通辽市| 桦南县| 兴城市| 苏州市| 肇源县| 彰武县| 哈尔滨市| 通山县| 武穴市| 老河口市| 阳东县| 济阳县| 瑞安市| 凉城县| 镶黄旗| 阿图什市|