2012-05-22 6 views

답변

4

submit 제출 스레드가 작업 완료까지 get을 호출 할 수있는 Future을 반환합니다.

Future<?> future = executor.submit(new Runnable() { ... }); 
future.get(); 
+0

future.get()을 사용하면 호출자 스레드가이를 완료했는지 의식적으로 호출해야합니다. 내 응용 프로그램의 호출자 스레드는 어떤 블로킹 작업도 할 수없는 UI 스레드 일 수 있지만 뷰를 새로 고칠 때 일종의 업데이트를 받아야합니다. – garbagecollector

+0

완료되면 실행되도록 UI 스레드에 작업을 제출해야합니다. UI 스레드의 이벤트 루프가 작업을 선택하여 실행합니다. 또는'isDone'가'true'를 리턴 할 때까지 정기적으로 미래를 폴링하기 위해 UI 스레드에서 되풀이 작업을 스케줄링 할 수 있습니다. –

3

반환되는 Future 개체의 get()을 차단하거나 isDone() 메서드를 폴링 할 수 있습니다. 또는 ListenableFuture이있는 google 구아바 라이브러리를 사용할 수 있습니다.

+0

나는 계산이 완료 될 때까지 get()을 막을 것이라고 확신한다. –

0

구현이 확실하지 않고 동시에 실행될 스레드 수가 너무 많아서 작동하지 않을 수 있습니다. 당신이 살펴볼 수있는 한가지는 runnable 자체가 필요한 UI 컴포넌트를 업데이트하는 방법을 알고있는 메소드를 호출함으로써 완료되었음을 알리는 것입니다.

관련 문제