Java:使用执行程序填充数据

时间:2014-10-21 07:46:40

标签: java multithreading executorservice

我有两个代码,我正在使用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使其多线程以提高性能吗? 如果没有,那么任何替代方案?

0 个答案:

没有答案