Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat 7.0.25上的ExecutorService线程第二次处于等待状态_Java_Multithreading_Spring Mvc_Tomcat_Executorservice - Fatal编程技术网

Java Tomcat 7.0.25上的ExecutorService线程第二次处于等待状态

Java Tomcat 7.0.25上的ExecutorService线程第二次处于等待状态,java,multithreading,spring-mvc,tomcat,executorservice,Java,Multithreading,Spring Mvc,Tomcat,Executorservice,有人能帮我解决这个问题吗 我在Tomcat7.0.25上部署了一个SpringWeb应用程序,在控制器中我创建了如下线程 if(condition == true){ ExecutorService taskExecutor = Executors.newFixedThreadPool(8); taskExecutor.execute(new SomeRunnable(param1,param2,param3)); //The above execute is r

有人能帮我解决这个问题吗

我在Tomcat7.0.25上部署了一个SpringWeb应用程序,在控制器中我创建了如下线程

   if(condition == true){
    ExecutorService taskExecutor = Executors.newFixedThreadPool(8);

    taskExecutor.execute(new SomeRunnable(param1,param2,param3));
    //The above execute is repeated 8 times with different params.

   taskExecutor.shutdown();
   try {
       taskExecutor.awaitTermination(Long.MAX_VALUE,    TimeUnit.NANOSECONDS);
   } catch (InterruptedException e) {
        System.out.println("exception");
    }
}
创建了8个任务,第一次请求时执行得很好。它完成得很好

现在,当第二次点击上面的代码时,应用程序冻结,使用jvisualvm,我可以看到所有线程都在等待

有人能帮我指出为什么它第一次工作,第二次停止,tomcat没有响应


几乎可以肯定,这并不是问题所在,但是像这样吞下你的
中断异常是不好的做法。至少,在catch中调用
Thread.currentThread().interrupt()
,以保留线程被中断的事实。第二次请求到来时,它会创建线程,应用程序停止并拒绝服务任何请求,因为所有线程都处于等待状态,唯一的出路是再次启动tomcat。为什么所有线程都处于等待状态。您是否可以添加更多代码以明确它是否在FOR循环中运行,或者如何运行??taskExecutor.execute(newsomeRunnable(param1,param2,param3));重复8次,并且不在带有硬编码参数的for循环中大多数情况下肯定不是当前的问题,但是像这样吞下
中断异常是不好的做法。至少,在catch中调用
Thread.currentThread().interrupt()
,以保留线程被中断的事实。第二次请求到来时,它会创建线程,应用程序停止并拒绝服务任何请求,因为所有线程都处于等待状态,唯一的出路是再次启动tomcat。为什么所有线程都处于等待状态。您是否可以添加更多代码以明确它是否在FOR循环中运行,或者如何运行??taskExecutor.execute(newsomeRunnable(param1,param2,param3));重复8次,不在带有硬编码参数的for循环中