2016-12-29 5 views
2

몇 가지 다른 작업을 완료 한 후 작업을 실행하는 별도의 스레드를 기다리지 않고 작업을 실행하는 일반적인 방법이 있습니까?다른 여러 작업 완료 후 작업 실행

+2

속성 변경 리스너와 같은 콜백 메커니즘을 사용하고 모든 작업이 체크인 한 후 마지막 작업을 호출 할 수 있습니다. –

답변

3

나는

tasks.parallelStream().forEach(Runnable::run); 
doSomething(); 
+1

또는 ['ExecutorService.invokeAll'] (https://docs.oracle. 실행에 대한 더 많은 제어가 필요한 경우 com/javase/8/docs/api/java/util/concurrent/ExecutorService.html # invokeAll-java.util.Collection-) ... – Holger

0

는 우선 블록 큐를 정의하고 모든 작업이 비슷한 인터페이스를 구현해야 계속하기 전에 작업을 실행하는 parallelStream (그래서 같은 대기되지 않음)를 사용합니다. 실행하려는 모든 작업을 prority 대기열에 추가하면 우선 순위가 높은 작업이 맨 위에 표시됩니다 ..... 대기열 폴링 유지 ..... 이제 우선 순위가 높은 작업 대기열에 추가되지 않았지만 더 높은 우선 순위의 작업 후에도 작업을 계속 실행하려면 ..... 작업을 실행해야하는 경우 true를 반환하는 단일 부울 메서드로 인터페이스를 구현하도록합니다. 실행중인 조건이 false 인 경우 폴링하는 동안 실행중인 조건을 ........ 우선 순위 대기열에 다시 태스크를 추가하고 폴링을 유지하십시오.

+0

"작업 실행 다른 여러 작업이 완료된 후에 "실행 명령을 따르기를 원합니다. – prashant