Skip to content

Commit 8279a03

Browse files
authored
add CompletableFuture 사용 예시
1 parent 4740e39 commit 8279a03

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

Java/CompleatableFuture.md

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
## CompletableFuture 사용 예시
2+
>급하게 사용하게 된 CompletableFuture 사용 기록
3+
4+
~~~java
5+
/**
6+
* 벤더 상세조회 (Async)
7+
*
8+
* @param utmCode 벤더 식별 아이디
9+
* @return 벤더 상세조회 응답 객체
10+
*/
11+
public DetailedVendorDTO getDetailedVendorAsync(String utmCode) {
12+
CompletableFuture<List<String>> vendorHasServiceAsync = getVendorHasServiceAsync(utmCode);
13+
CompletableFuture<List<TokenResponseDTO>> tokensByUtmCodeAsync = getTokensByUtmCodeAsync(utmCode);
14+
15+
DetailedVendorDTO detailedVendorDTO = vendorHasServiceAsync
16+
.thenCombine(tokensByUtmCodeAsync,
17+
(services, tokens) -> DetailedVendorDTO.builder()
18+
.servicesByVendor(services)
19+
.tokenList(tokens)
20+
.build()
21+
)
22+
.join();
23+
24+
return detailedVendorDTO;
25+
}
26+
27+
private CompletableFuture<List<String>> getVendorHasServiceAsync(String utmCode) {
28+
CompletableFuture future = new CompletableFuture<>();
29+
new Thread(() -> {
30+
log.info("새로운 쓰레드로 벤더가 사용중인 서비스 목록 조회");
31+
List<VendorHasService> vendorHasServiceByUtmCode = vendorHasServiceReadRepository.findVendorHasServiceByUtmCode(utmCode);
32+
List<String> services = vendorHasServiceByUtmCode.stream()
33+
.map(DynamoTable::getSk)
34+
.collect(Collectors.toList());
35+
future.complete(services);
36+
}).start();
37+
38+
return future;
39+
}
40+
41+
private CompletableFuture<List<TokenResponseDTO>> getTokensByUtmCodeAsync(String utmCode) {
42+
CompletableFuture future = new CompletableFuture<>();
43+
new Thread(() -> {
44+
log.info("새로운 쓰레드로 벤더가 사용중인 토큰 목록 조회");
45+
List<Token> tokensByUtmCode = tokenReadRepository.findTokensByUtmCode(utmCode);
46+
List<TokenResponseDTO> tokens = tokensByUtmCode.stream()
47+
.map(TokenResponseDTO::from)
48+
.collect(Collectors.toList());
49+
future.complete(tokens);
50+
}).start();
51+
52+
return future;
53+
}
54+
~~~
55+
56+
### Reference
57+
- https://brunch.co.kr/@springboot/267

0 commit comments

Comments
 (0)