为什么 spring boot using ExecutorCompletionService 中的线程不并行启动?

Why thread in spring boot using ExecutorCompletionService does not start in parallel?

我使用 spring 启动版本 2.1.9.RELEASE 和 Java 1.8,并且有两个我想并行启动的 lang 运行 进程。因此我决定使用线程。 当我启动 sumResult 方法时,第二个线程先启动,第一个线程等待第二个线程完成。

为什么这两个线程不同时启动,或者至少相隔较短?

private void sumResult(String year, String month, String day) throws 
    ExecutionException, InterruptedException {
         ExecutorCompletionService<Boolean> completionService = new 
         ExecutorCompletionService<>(Executors.newCachedThreadPool());

         // First thread
         mut.initialise(year, month, day);
         boolean mutCompleted = completionService.submit(
               ()-> mut.sum(),true).get();

         // Second thread
         apt.initialise(year, month, day);
         boolean aptCompleted = completionService.submit(
              ()-> apt.sum(), true).get();

         // On completion of both thread
         if(mutCompleted && aptCompleted ){
              mixAndPrint();
         }

}

因为您在提交第二个作业之前阻止了对第一个作业调用 get()

submit
get
submit
get

如果你想让它们运行并行,你需要做

submit
submit
get
get