2011-03-31 66 views
0

我在調用線程時遇到問題。Java在多次成功執行線程後在循環中拋出ExecutionException

這裏是一小段代碼片段:

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。

我在做什麼錯?

謝謝!

+2

發佈堆棧跟蹤請 – katsharp 2011-03-31 17:42:01

+0

發佈'MyThread'的代碼 – pajton 2011-03-31 17:45:49

+0

只是爲了確保:'MyThread'實現'Callable'並且與'Thread'沒有關係(不擴展)? – 2011-04-05 23:54:47

回答

5

ExecutionException當文檔指出:試圖檢索中止通過拋出異常的任務的結果時

拋出異常。這個異常可以使用Throwable.getCause()方法進行檢查。

所以你的任務是拋出一個異常。在ExecutionException上調用getCause來查看該異常。