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();
  }