我有两个代码,我正在使用Java的ExecutorService。 我对它的使用有一些怀疑
这是一个很好的编码实践吗?
ExecutorService es = Executors.newCachedThreadPool(); try {
while (iter.hasNext()) {
final something = (something) iter.next();
Future<Data> fut = es
.submit(new Callable<Data>() {
public Data call()
throws Exception {
return someMethod(param);
}
});
listF.add(fut);
}
} catch (Exception e) {
// some exception
} finally {
if (es != null && !es.isShutdown()) {
es.shutdown();
try {
es.awaitTermination(2, TimeUnit.MINUTES);
} catch (Exception e) {
}
}
}
if (listF != null) {
dsInfo = new ArrayList<Data>();
for (Future<Data> df : listF) {
dsInfo.add(df.get());
}
}
请不要查找语法和其他正常的编码错误。
我没有在线程中共享任何变量。没有静态实例。 每个对象都是个体。
如果这不是一个好的做法,可以选择什么。
这是一个操作,
有一个重复的任务,循环完成。我可以直接使用ExecutorService使其多线程以提高性能吗? 如果没有,那么任何替代方案?