gpt4 book ai didi

java - 使用多线程java进行数据处理

转载 作者:行者123 更新时间:2023-12-01 09:54:27 25 4
gpt4 key购买 nike

我有两个文件夹,其中包含多个 csv 文件。文件夹 1 有多个 csv 文件,文件夹 2 有多个 csv 文件。基于某些条件,我正在比较 csv 文件(其代码存在于 CompareCSV(File f1, File f2) 中)并写入新的输出文件。

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

最佳答案

除非您有多个硬盘驱动器,否则并行化进程不会加快速度,因为您的操作本质上是 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));

并且该方法将并行执行(您可能希望将文件存储在某个集合中并使用循环,但您明白了)。

关于java - 使用多线程java进行数据处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37353501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com