[英]File reading using main thread and process data using multithreading and ExecutorService
我需要使用多線程讀取批量數據文件並處理數據(如數據驗證,跟蹤驗證失敗和插入數據庫等)。 我想使用主線程從文件中讀取數據並使用ExecutorService
處理數據。
這是正確的方法嗎? 如果是的話,我該怎么做?
此外,我需要在對數據庫進行驗證和授權后對每個記錄輸出進行處理。 如何跟蹤每條記錄的輸出? 可以把它作為一個常見變量並增加故障記錄數據的數量嗎?
此外,我需要跟蹤有多少記錄順序失敗?
謝謝。
我建議將文件拆分為虛擬段,並允許執行者選擇和處理這些段。 在主線程中讀取文件最終會產生瓶頸。 允許每個線程分別並行地讀取其段。 請參閱以下文章如何實現對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.