Java Executor服务在不等待任务完成的情况下被终止

Java Executor服务在不等待任务完成的情况下被终止,java,multithreading,executorservice,Java,Multithreading,Executorservice,我的遗嘱执行人服务如下: ExecutorService exec = Executors.newFixedThreadPool(4); for(int i=0; i<4;i++) { Consumer consumer = new Consumer(); exec.execute(new ConsumerstartUpThread(consumer)); } ExecutorService exec=Executors.newFixedThreadPool(4); 对于(int

我的遗嘱执行人服务如下:

ExecutorService exec = Executors.newFixedThreadPool(4);
for(int i=0; i<4;i++) {
  Consumer consumer = new Consumer();
  exec.execute(new ConsumerstartUpThread(consumer));
}
ExecutorService exec=Executors.newFixedThreadPool(4);
对于(inti=0;itry

ExecutorService exec=Executors.newFixedThreadPool(4);
列表任务=新建ArrayList();
对于(int i=0;i<4;i++){
tasks.add(Executors.callable(newconsumerstartupthread(newconsumer()));
}
执行invokeAll(任务);
exec.shutdown();

invokeAll将等待所有任务终止(请参阅API)。为简化此过程,请使ConsumerstartUpThread实现可调用而不是可运行

否。但我的线程甚至在任务完成之前就已挂起。如果我给exec.awaitTermination(10000,TimeUnit.mili_秒)任务正在完成。但我希望我的线程只在任务完成后完成…如果你解释更多关于“被终止”的含义,这可能有助于发现问题。整个JVM是否关闭?ExecutorService是否关闭?线程是否阻塞或中断?或者什么?
ExecutorService exec = Executors.newFixedThreadPool(4);
List<Callable<Object>> tasks = new ArrayList<Callable<Object>>();
for (int i = 0; i < 4; i++) {
    tasks.add(Executors.callable(new ConsumerstartUpThread(new Consumer())));
}
exec.invokeAll(tasks);
exec.shutdown();