2017-10-09 8 views
4

Java 8에서 Completable future를 사용하고 있으며 수신 된 매개 변수에 따라 부작용이있는 여러 작업을 병렬로 실행 한 다음 (CompletableFuture.allOf()을 사용하여) "결합 된"미래를 반환하거나 아무것도하지 않고 이미 완료된 미래를 반환합니다.이미 완료된 CompletableFuture를 작성하는 올바른 방법은 무엇입니까 <Void>

그러나, allOfCompletableFuture<Void> 반환 :

public static CompletableFuture<Void> allOf(CompletableFuture<?>... cfs) 

그리고 값 예상 completedFuture()를 사용하여 알고 이미 완료 미래를 만들 수있는 유일한 방법 :

public static <U> CompletableFuture<U> completedFuture(U value) 

반환 지정된 값으로 벌써 완료되고있는 새로운 CompletableFuture

Void은 uninstantiable, 그래서 형 CompletableFuture<Void>의 이미 완성 된 미래를 창조하는 또 다른 방법이 필요합니다.

가장 좋은 방법은 무엇입니까? 인스턴스화 할 수없는

CompletableFuture<Void> done = CompletableFuture.completedFuture(null); 
+2

당신은'CompletableFuture 만 할 수 있습니까? (null)'? – lexicore

답변

4

Void 때문에, 당신은 미래에 join()를 호출하면 돌아 왔을 때 당신은 또한 얻을 것이다 정확히입니다 null 결과와 CompletableFuture<Void>을 완료 할 수 있습니다

8

null 내가 생각 통과 성공적으로 완료되면 allOf()에 의해 처리됩니다.

그래서 당신은

CompletableFuture<Void> cf = CompletableFuture.completedFuture(null); 

는 이미 완성 된 미래를 얻을 수 있습니다.

그러나 결과에 따라 아무 일이 없다는 것을 당신은 또한 나타 내기 위해

CompletableFuture<Void> cf = CompletableFuture.allOf(); 

를 사용할 수 있습니다. 결과는 완전히 동일합니다.