【发布时间】:2015-04-14 16:51:34
【问题描述】:
我有一段 java 代码,它从 xml 构造一个对象,根据对象的大小需要几纳秒到一毫秒。有时我必须在循环中调用该方法 1-2 次,有时 70-80 次以构造对象列表。
我尝试并行构建对象,但有时它需要的时间是顺序的两倍,而其他时间则为一半。现在我的问题是,是否有任何指导方针或性能比较指标来指导何时应该使用多任务处理以及何时应该使用多任务处理?
我使用的示例代码是:
List<Callable<Integer>> tasks = new ArrayList<Callable<Integer>>();
for (final Integer object : list) {
Callable<Integer> c = new Callable<Integer>() {
@Override
public Integer call() throws Exception {
return test.m1(object);
}
};
tasks.add(c);
}
List<Future<Integer>> results = EXEC.invokeAll(tasks);
for (Future<Integer> fr : results) {
fr.get();
}
【问题讨论】:
-
EXEC是如何定义的? -
test.m1()在做什么工作? -
ExecutorService EXEC = Executors.newCachedThreadPool();
-
m1() 只是在解析描述中提到的一些 xml。
-
我几乎可以肯定,将其搁置,因为基于意见是没有根据的。但由于我不能再发布答案:This 可能有助于确定您的任务至少应该在您的硬件上持续多长时间。
标签: java multithreading performance concurrency parallel-processing