【发布时间】:2015-11-10 17:12:12
【问题描述】:
我正在尝试使用多线程调用一个方法超过一百万次。所以我使用ExecutorService 并传递newFixedThreadPool 的动态值为:
Runtime.getRuntime().availableProcessors()
这会启动数千个线程,这会导致处理器负载过重吗?还是可以一起去?
ExecutorService service = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
ArrayList<Future<Boolean>> arrList = new ArrayList<Future<Boolean>>();
for (final Vlaue val : List) {
arrList.add(service.submit(new Callable() {
@Override
public Boolean call() throws Exception {
Object obj = client.findObj(
val.getItem1(),val.getItem2());
return obj.isValid();
}
}));
}
service.shutdown();
for (Future future : arrList) {
// at time future returns null here, not sure why?
assertTrue("Invalid object" future.get());
}
【问题讨论】:
-
这是在启动数千个线程 什么?你为什么这么认为?
标签: java multithreading memory-management