0

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

这是代码片段:

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();

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

我究竟做错了什么?

谢谢!

4

1 回答 1

5

ExecutionException 文档指出:

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

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

于 2011-03-31T20:45:47.053 回答