
parallelFuture::done() 메서드는 작업이 완료되었을 때 callback 함수를 호출하는 데 사용됩니다. 하지만, callback 함수가 작업이 완료된 후에 호출되는 것을 보장하지는 않습니다. 이 문제를 해결하기 위해서는 다음 두 가지 방법을 사용할 수 있습니다.
1. CompletableFuture::join() 메서드 사용: CompletableFuture::join() 메서드는 작업이 완료될 때까지 블록킹되며, 작업이 완료된 후에 callback 함수를 호출합니다. 이 메서드는 작업이 완료된 후에 callback 함수를 호출하는 것을 보장합니다.
#hostingforum.kr
java
CompletableFuture future = CompletableFuture.supplyAsync(() -> {
// 비동기 작업을 처리합니다.
return "결과";
});
try {
String result = future.get(); // 작업이 완료될 때까지 블록킹됩니다.
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
// 작업이 실패한 경우에 대한 처리를 추가합니다.
}
2. CompletableFuture::whenComplete() 메서드 사용: CompletableFuture::whenComplete() 메서드는 작업이 완료되었을 때 callback 함수를 호출합니다. 이 메서드는 작업이 완료된 후에 callback 함수를 호출하는 것을 보장합니다.
#hostingforum.kr
java
CompletableFuture future = CompletableFuture.supplyAsync(() -> {
// 비동기 작업을 처리합니다.
return "결과";
});
future.whenComplete((result, exception) -> {
if (exception == null) {
System.out.println(result);
} else {
// 작업이 실패한 경우에 대한 처리를 추가합니다.
}
});
callback 함수가 작업이 완료되지 않은 경우에 대한 처리 방법은 다음과 같습니다.
* 작업이 실패한 경우에 대한 처리를 추가합니다. 예를 들어, CompletableFuture::whenComplete() 메서드에서 exception이 null이 아닌 경우에 대한 처리를 추가할 수 있습니다.
* 작업이 완료되지 않은 경우에 대한 처리를 추가합니다. 예를 들어, CompletableFuture::whenComplete() 메서드에서 result이 null인 경우에 대한 처리를 추가할 수 있습니다.
#hostingforum.kr
java
CompletableFuture future = CompletableFuture.supplyAsync(() -> {
// 비동기 작업을 처리합니다.
return null; // 작업이 완료되지 않은 경우
});
future.whenComplete((result, exception) -> {
if (result == null) {
// 작업이 완료되지 않은 경우에 대한 처리를 추가합니다.
} else {
System.out.println(result);
}
});
2025-03-16 11:53