【发布时间】:2018-04-19 14:09:36
【问题描述】:
首先,感谢您花时间阅读本文。该代码是作为 JUnit 测试编写和执行的,所以我不知道这是否会影响答案。
@Test
public void generate___() {
long startTime = System.nanoTime();
for (File file : getResultsFromFolder("C:\\temp\\....")) {
class runnableClass implements Runnable{
public void run() {
// do something with file
}
}
new runnableClass().run();
}
long endTime = System.nanoTime();
System.out.println("total took: " + (endTime - startTime) / 1000000); //divide by 1000000 to get milliseconds.
}
【问题讨论】:
-
取决于
getResultsFromFolder是否是多线程的。否则,我看不到任何线程的创建。 -
我不同意雅各布的观点;由于您正在为从
getResultsFromFolder("C:\\temp\\....")获得的每个文件创建并运行一个新线程(Runnable),因此它是多线程的 -
@ArnauldAlex A
Runnable不是Thread。 -
javarevisited.blogspot.fr/2012/01/… 好的,很难看出区别,但是好的。
-
@ArnauldAlex,您链接的文章标题具有误导性。它没有解释
Thread是 和Runnable是什么之间的区别。Thread是一个具有魔术方法start()的对象,它创建一个新线程。Runnable只是一个接口:它根本不做任何事情。如果您创建了一个实现可运行的类,那么您将被允许将其存储在Runnable变量中,并将其传递给接受Runnable参数的函数。但是编译器会要求你的类有一个run()方法。
标签: java multithreading junit parallel-processing