2014-10-01 2 views
0

아래 코드에서 if 루프가 실행되지 않습니다. futureTask1과 2가 완료되기 전에 다음 코드 행이 실행됩니다. 그리고 프로그램은 절대 종료되지 않습니다. 내 오류는 무엇입니까?FutureTask가 완료되지 않음

ExecutorService executor=Executors.newFixedThreadPool(2); 

    MyClass1 myclass1= new MyClass1(x,y); 
    MyClass2 myclass2= new MyClass2(x,y); 

    FutureTask<List<String>> futureTask1 = new FutureTask<List<String>>(myclass1); 
    FutureTask<List<String>> futureTask2 = new FutureTask<List<String>>(myclass2); 

    executor.submit(futureTask1); 
    executor.submit(futureTask2); 

    System.out.println("FutureTask completed"); 

    if(futureTask1.isDone() && futureTask2.isDone()){ 
     System.out.println("Done"); 
     //shut down executor service 
     executor.shutdown(); 
     //Execute some code 
     return; 
    } 
+0

** "FutureTask completed"메시지가 정확하다는 것을 ** 알고 계십니까? 내 말은, 작업이 실제로 완료 되었습니까? – CiaPan

+0

'if loop'가 무엇입니까? 제시된 코드에서 ** 루프 **를 볼 수 없습니다. – CiaPan

+0

예. 그게 내가 원하는거야. 다음 줄을 실행하기 전에 완료 될 때까지 기다려야합니다. – Harbinger

답변

0

당신은 실행기에 작업을 제출하고 있지만 나는 작업을 완료 할 수있는 집행을 기다리는 코드를 확인할 수 없습니다. executor.submit()을 보내 주면 작업을 기다리는 데 사용할 수있는 Future이 반환됩니다.

관련 문제