如果将来的任务抛出异常,线程是否返回到执行者服务的线程池?

时间:2016-02-12 09:19:01

标签: java multithreading

我有ThreadPoolExecutor的简单用例。我想确保在线程执行期间是否存在任何类型的运行时异常,是否将线程返回到池中。如何验证?

ExecutorService pool = Executors.newFixedThreadPool(30);
pool.submit(new MyThread())
boolean jobExecutionStatus =true 
try{
       for (Future<Boolean> future : futureArrayList){
                if (jobExecutionStatus){
                    jobExecutionStatus = future.get();
                }
                else{
                    break;
                }

            }
        }
        catch (InterruptedException | ExecutionException e){
            jobExecutionStatus = false;
        }

1 个答案:

答案 0 :(得分:1)

不,如果抛出Exception,则会创建新的Thread(仅在必要时)。

来自javadoc

  

如果任何线程因执行期间的失败而终止   关闭,新的将在需要时取代来执行   后续任务。