几次成功执行线程后,Java在循环中抛出ExecutionException

0 java concurrency executorservice

我遇到了可调用线程的问题.

这是代码snipet:

ExecutorService service = Executors.newFixedThreadPool(1);  
for(int i =0; i<30;i++){  
    Future<MyClass> task = service.submit( new MyThread(parameter1, parameter2));  
    try{  
        result = task.get();  
    }  
    catch(InterruptedException ex){  
        System.out.println("Interruped!");  
    }  
    catch(ExecutionException ex){  
        System.out.println("Execution ExceptioN!");  
    }  
}  
service.shutdownNow();
Run Code Online (Sandbox Code Playgroud)

上面的代码将正确执行18次,然后在第18次之后抛出ExecutionException.

我究竟做错了什么?

谢谢!

ric*_*chs 5

ExecutionException文档说明:

尝试检索通过抛出异常而中止的任务的结果时抛出异常.可以使用Throwable.getCause()方法检查此异常.

所以你的任务是抛出异常.在ExecutionException上调用getCause以查看该异常.