有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我的可调用线程有问题

以下是代码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();

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

我做错了什么

谢谢


共 (1) 个答案

  1. # 1 楼答案

    ExecutionException文档说明:

    试图检索通过引发异常而中止的任务的结果时引发异常。可以使用Throwable来检查此异常。getCause()方法

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