자바 동시성 프로그래밍 - 비동기 프로그래밍
allOf()

개념
여러 개의
CompletableFuture를 동시에 실행하고 모든CompletableFuture가 완료될 때까지 대기하는 데 사용된다.CompletableFuture중에서 가장 오래 걸리는 작업이 완료 되기 전까지allOf()는 대기한다.ExecutorService의invokeAll()과 유사한 개념이다.
인수 값
CompletableFuture<?>의 배열을 인수로 받는다.
반환 값
새로운
CompletableFuture<Void>객체를 반환한다.


allOf() 흐름도

메인 스레드가
join()으로 대기하고 있다가 해제 되는 기준은allOf()로 반환된CompletableFuture의 결과가 아닌null이 아닌 값(AltResult)으로 채워져야 한다.
AltResult는 모든CompletableFuture의 비동기 작업이 완료되었을 때allOf()의CompletableFuture에 저장되는null개념의 객체이다.
allOf() 예제 코드


anyOf()

개념
여러 개의
CompletableFuture중에서 가장 먼저 완료되는 하나의CompletableFuture를 반환하는 메서드이다.병렬 작업을 수행하고 가장 먼저 결과를 얻고자 할 때 유용하다.
ExecutorService의invokeAny()와 유사한 개념이다.
인수 값
CompletableFuture<?>의 배열을 인수로 받는다.
반환 값
새로운
CompletableFuture<Object>객체를 반환한다.


anyOf() 흐름도

메인 스레드가
join()으로 대기하고 있다가 해제 되는 기준은anyOf()로 반환된CompletableFuture의 결과 값이 채워져야 한다.
CompletableFuture의 결과 값이 먼저 채워지면 다른 값으로 수정되거나 변경될 수 없다.
anyOf() 예제 코드


이전 ↩️ - 비동기 프로그래밍 - 비동기 작업 조합(thenCompose() & thenCombine())
Last updated