簡體   English   中英

使用主線程和使用多線程和ExecutorService處理數據的文件讀取

[英]File reading using main thread and process data using multithreading and ExecutorService

我需要使用多線程讀取批量數據文件並處理數據(如數據驗證,跟蹤驗證失敗和插入數據庫等)。 我想使用主線程從文件中讀取數據並使用ExecutorService處理數據。

  1. 這是正確的方法嗎? 如果是的話,我該怎么做?

  2. 此外,我需要在對數據庫進行驗證和授權后對每個記錄輸出進行處理。 如何跟蹤每條記錄的輸出? 可以把它作為一個常見變量並增加故障記錄數據的數量嗎?

  3. 此外,我需要跟蹤有多少記錄順序失敗?

謝謝。

我建議將文件拆分為虛擬段,並允許執行者選擇和處理這些段。 在主線程中讀取文件最終會產生瓶頸。 允許每個線程分別並行地讀取其段。 請參閱以下文章如何實現對Java中映射到內存的文件的並發讀取?

是的,它是正確的,但如果處理需要很長時間(與讀取文件相比),您將獲得改進,片段的處理是獨立的,並且您有多個核心。 將數據讀取到任何容器(如果它適合RAM)並使用任何這樣的ExecService教程: http ://tutorials.jenkov.com/java-util-concurrent/executorservice.html

你的想法是正確的IMO,我會做類似的事情:

while ((line = filereader.readLine()) != null) {
    Mycallable mycallable = new Mycallable(line);
    executor.submit(mycallable);
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM