我有一个文件数组的每个循环。对于每个文件,执行某些常见的操作。有很多这样的文件需要处理并且耗时。我在想是否java线程可以帮助我实现更高的性能。我是java线程编程的新手。需要任何帮助
答案 0 :(得分:2)
假设FileReader类包含处理单个文件的逻辑
public class FileReader implements Runnable {
String fileName;
public FileReader(String fileName) {
this.fileName = fileName;
}
public void run() {
processFile(fileName);
}
private void processFile(String fileName) {
// Your logic of processing the file.
}
}
然后添加以下代码来处理目录中的文件
您应该始终使用线程池来确保优雅地使用系统资源
private static final int THREAD_COUNT = 10;
private static final ThreadPoolExecutor pool = new ThreadPoolExecutor(
THREAD_COUNT, THREAD_COUNT, 10, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>());
为您要处理的每个文件
FileReader reader = new FileReader(file.getAbsolutePath());
pool.execute(reader);
答案 1 :(得分:1)
这实际上取决于你要为每个文件做些什么,以及处理瓶颈在哪里。如果您的处理是CPU限制的(您必须对从文件读取的数据进行大量计算),那么创建更多线程然后您有CPU核心来运行它们对您没有帮助。
另一方面,如果您的处理恰好是“将文件数据提交给服务器,等待响应”,并且同时提交请求不会减慢服务器速度,每个文件的线程可能会有所帮助。
在不了解处理涉及的内容的情况下,并没有真正具体的建议。