【发布时间】:2019-09-18 12:07:24
【问题描述】:
我很想听听其他人对如何调整以下代码以提高性能的看法。我的想法是 run 方法可以递归调用 20 次,而不是简单的迭代循环:
class Looper extends Thread {
@Override
public void run() {
for(int i=0; i<10; i++) {
heavyLogicGoesHere();
}
}
void heavyLogicGoesHere() {
System.out.println((new java.util.Random().nextInt()));
}
}
public class Main {
public static void main(String[] args) {
Looper worker1 = new Looper();
worker1.run();
Looper worker2 = new Looper();
worker2.run();
}
}
【问题讨论】:
-
什么?为什么递归应该比迭代更好?这通常是 FAAAAR 过于宽泛,性能改进很大程度上取决于正在完成的任务,没有一般的答案。如果有的话,您可以通过谷歌搜索轻松找到它。
-
因为
run()被直接调用(而不是调用start()),所以扩展线程没有意义。所以workers 顺序运行,而不是同时运行。举个简单的例子,顺序运行可能实际上更快。
标签: java algorithm performance