개념
여러 개의 CompletableFuture를 동시에 실행하고 모든 CompletableFuture가 완료될 때까지 대기하는 데 사용된다.
CompletableFuture
CompletableFuture 중에서 가장 오래 걸리는 작업이 완료 되기 전까지 allOf()는 대기한다.
allOf()
ExecutorService의 invokeAll()arrow-up-right과 유사한 개념이다.
ExecutorService
invokeAll()
인수 값
CompletableFuture<?>의 배열을 인수로 받는다.
CompletableFuture<?>
반환 값
새로운 CompletableFuture<Void> 객체를 반환한다.
CompletableFuture<Void>
메인 스레드가 join()으로 대기하고 있다가 해제 되는 기준은 allOf()로 반환된 CompletableFuture의 결과가 아닌 null이 아닌 값(AltResult)으로 채워져야 한다.AltResult는 모든 CompletableFuture의 비동기 작업이 완료되었을 때 allOf()의 CompletableFuture에 저장되는 null 개념의 객체이다.
메인 스레드가 join()으로 대기하고 있다가 해제 되는 기준은 allOf()로 반환된 CompletableFuture의 결과가 아닌 null이 아닌 값(AltResult)으로 채워져야 한다.
join()
null
AltResult
AltResult는 모든 CompletableFuture의 비동기 작업이 완료되었을 때 allOf()의 CompletableFuture에 저장되는 null 개념의 객체이다.
여러 개의 CompletableFuture 중에서 가장 먼저 완료되는 하나의CompletableFuture를 반환하는 메서드이다.
병렬 작업을 수행하고 가장 먼저 결과를 얻고자 할 때 유용하다.
ExecutorService의 invokeAny()arrow-up-right와 유사한 개념이다.
invokeAny()
새로운 CompletableFuture<Object> 객체를 반환한다.
CompletableFuture<Object>
메인 스레드가 join()으로 대기하고 있다가 해제 되는 기준은 anyOf()로 반환된 CompletableFuture의 결과 값이 채워져야 한다.CompletableFuture의 결과 값이 먼저 채워지면 다른 값으로 수정되거나 변경될 수 없다.
메인 스레드가 join()으로 대기하고 있다가 해제 되는 기준은 anyOf()로 반환된 CompletableFuture의 결과 값이 채워져야 한다.
anyOf()
CompletableFuture의 결과 값이 먼저 채워지면 다른 값으로 수정되거나 변경될 수 없다.
이전 ↩️ - 비동기 프로그래밍 - 비동기 작업 조합(thenCompose() & thenCombine())arrow-up-right
thenCompose()
thenCombine()
메인 ⏫arrow-up-right
다음 ↪️ - 비동기 프로그래밍 - 비동기 예외 처리arrow-up-right
Last updated 3 months ago