public static void main(String[] args) { ExecutorService executor = Executors.newCachedThreadPool(); // CompletionService的子类。泛型参数是返回值的类型。 // 当completionService的submit方法执行时,相当于是委托给ExecutorService线程池中的线程去执行指定的任务, // 参考85行,cs.submit(rg);//提交任务,使ExecutorService执行之。 CompletionService<String> completionService = new ExecutorCompletionService<String>(executor); ReportRequester onlineRR = new ReportRequester("OnLine", completionService); ReportRequester faceRR = new ReportRequester("Face", completionService); ResultProcessor resultProcessor = new ResultProcessor(completionService, false); // 执行打印任务的线程池 // ExecutorService es1 = Executors.newCachedThreadPool(); executor.execute(onlineRR); executor.execute(faceRR); executor.execute(resultProcessor); try { TimeUnit.SECONDS.sleep(10); resultProcessor.setEnd(true); } catch (InterruptedException e) { e.printStackTrace(); } // es.shutdown(); executor.shutdown(); }