2011-03-31 2 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 던져 : 여기

코드 snipet이다.

내가 뭘 잘못하고 있니?

감사합니다.

+2

스택 추적 게시하기 – katsharp

+0

'MyThread'코드 게시 – pajton

+0

'MyThread'는'Callable'을 구현하고'Thread'와는 아무런 관련이 없습니다 (확장하지는 않습니다)? –

답변

5

ExecutionException 문서 상태 : 예외를 throw하는 것에 의해 중단 한 태스크의 결과를 취득하려고했을 때에

예외가 발생합니다. 이 예외는, Throwable.getCause() 메소드를 사용해 열람 할 수 있습니다.

그래서 작업에서 예외가 발생합니다. 예외를 보려면 ExecutionException에 대해 getCause를 호출하십시오.

관련 문제