2016-05-20 9 views
0

複数のcsvファイルを含む2つのフォルダがあります。フォルダ1には複数のcsvファイルがあり、フォルダ2には複数のcsvファイルがあります。特定の条件に基づいて、CSVファイル(compareCSV(File f1、File f2)にあるコード)と新しい出力ファイルへの書き込みを比較しています。マルチスレッドを使用したデータ処理java

public void traverseThroughFiles(){ 
     //some filename checking code 
     //if output is true call below function 
     compareCSV(File f1, File f2) 
} 

私は複数のファイルを同時に処理できるように、Javaでマルチスレッドを使用したいと考えています。私の理解によれば、複数のスレッドを使用して関数comapareCSV(File f1、File f2)を呼び出すことができれば、私は目標を達成する必要があります。スレッドの数は、ユーザーが決定する必要があります。しかし、考慮するnumberofThreads = 5

私の問題を解決することができるJavaに存在する関数/クラスはありますか?

ThreadPoolを使用しようとしましたが、私の場合は実装できませんでした。また、私の場合はどうすればExecutorServiceを使うことができますか?

答えて

1

ハードドライブが複数ある場合を除き、処理がパラレル化されても、I/Oが基本的に制限されているため、パフォーマンスが向上することはありません。

あなたは、単に行うことができ、複数のスレッドを使用すると、パフォーマンスが向上する可能性があると仮定すると:

ExecutorService executor = Executors.newFixedThreadPool(5); 

executor.submit(() -> compareCSV(f1, f2)); 
executor.submit(() -> compareCSV(f3, f4)); 
executor.submit(() -> compareCSV(f5, f6)); 
executor.submit(() -> compareCSV(f7, f8)); 

及び方法は(おそらくいくつかのコレクション内のファイルを保存したいと思うでしょう、並列に実行し、ループを使用します。しかしあなたはその考えを得る)。

+0

ご協力ありがとうございます。これは機能しています。ただし、executor.shutdown()は完了後に呼び出す必要があります。 – Chetan

関連する問題