Java Tomcat 7.0.25上的ExecutorService线程第二次处于等待状态
有人能帮我解决这个问题吗 我在Tomcat7.0.25上部署了一个SpringWeb应用程序,在控制器中我创建了如下线程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
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循环中