我已经做了一个函数,它需要x个参数。每个参数代表一个文件。增量线程名称
我希望为这些文件中的每一个都分配一个线程,以便尽可能快地计算文件的字数。目前我已经做了一些似乎工作,但我发现自己有麻烦检查线程,因为他们都分配了名称“t”
这将是很好的以某种方式增加线程的名称。第一个线程将是t1,并将分配给第一个文件,依此类推。
for (File file : fileList) {
final File f = file;
Thread t = null;
ThreadGroup test = null;
Runnable r = new Runnable() {
public void run() {
Scanner fileScan;
try {
fileScan = new Scanner(f);
}
catch(FileNotFoundException e){
System.out.println("Something went wrong while accessing the file");
return;
}
int words = 0;
while (fileScan.hasNext()) {
words++;
fileScan.next();
}
System.out.println(f.getName() + ": " + words + " words");
System.out.println(Thread.activeCount() + ": ");
}
};
t = new Thread(r);
t.start();
}
的经纬密度上升,因为它与Thread.activeCount()检查时应该的,但我不知道如何联系过他们,因为我有名字T,这使得它很难使所有分配而另一个线索则要等待他们的输出。
我希望我的解释澄清的问题:/
编辑:
的想法是,我将计算在不同的文件中的单词量,每一个文件需要被分配一个线程用于本身的速度它起来。除此之外,我想要一个线程等待所有其他线程的输出(这意味着我将不得不等待它们完成,因此为什么我会访问线程的名称)。
最后一个等待的线程将在关闭程序之前将收集的数据用于自己的操作。
我不知道如果我理解得很好,但你不能只用'新主题(R,“名”)'? – 2014-12-10 22:16:46
我想你需要澄清你想要做什么,你想访问线程?究竟如何?你可以在't = new Thread(r);'do'myList.append(t)'之后创建'List';或者你可以使用映射并将文件名映射到线程指针? –
RAEC
2014-12-10 22:19:41
天哪,这听起来像一个[XY问题](http://mywiki.wooledge.org/XyProblem),特别是人为地使用一个字符串来保存其他地方更好的信息。为什么不使用CountDownLatch或类似的构造? – 2014-12-10 22:21:57