在java中读取大文本文件时的线程?

时间:2012-05-01 10:56:58

标签: java multithreading

我必须阅读几个非常大的txt文件,并且必须根据用户输入使用多个线程或单个线程来执行此操作。

假设我有一个获取用户输入的main方法,并且用户请求单个线程并希望为该线程处理20个txt文件。我怎么做到这一点?请注意,下面的代码不是我的代码或其设置,而是"的想法"是

示例:

int numFiles = 20;
int threads = 1;

 String[] list = new String[20];
 for(int i = 1; i < 21; i++){
   list[i] = "hello" + i + ".txt";//so the list is a hello1.txt, hello2.txt, ...,  hello20.txt
 }

 public void run(){
 //processes txt file
 }

总而言之,我如何通过单个线程实现这一目标?有20个线程?

1 个答案:

答案 0 :(得分:3)

听起来你需要一个可配置的线程池,每个文件读取操作都是一个要提交到该池中的工作。

当用户指定要使用的线程数时,您需要适当地配置池,提交一组文件读取作业,并让池对执行进行排序。

在Java世界中,您使用Executors.newFixedThreadPool工厂方法,并将每个作业提交为Callable。关于Java线程池的Here's an article from IBM