SeouliteLab
Java에서 CompletableFuture 사용하여 비동기 작업 처리하기 본문
소개:
Java에서 CompletableFuture는 비동기 작업을 효율적으로 처리하는 데 사용됩니다. 이번 글에서는 Java에서 쓰레드를 어떻게 생성하고 실행하며, 필요에 따라 정지시키는지에 대해 알아보겠습니다.
CompletableFuture 소개:
CompletableFuture는 Java에서 비동기적으로 실행되는 작업을 쉽게 구현할 수 있는 클래스입니다. 이 클래스는 Future 인터페이스를 확장하여 비동기 작업의 결과를 처리하는데 유용한 메서드를 제공합니다.
예제 1: CompletableFuture로 간단한 비동기 작업 수행
import java.util.concurrent.CompletableFuture;
public class CompletableFutureExample {
public static void main(String[] args) {
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
System.out.println("비동기 작업 실행 중...");
// 비동기 작업 수행
});
// 비동기 작업이 완료될 때까지 대기
future.join();
System.out.println("비동기 작업 완료");
}
}
출력 결과:
비동기 작업 실행 중...
비동기 작업 완료
CompletableFuture 설명:
위 예제에서는 CompletableFuture의 runAsync() 메서드를 사용하여 간단한 비동기 작업을 수행합니다. 이 메서드는 Runnable 객체를 인자로 받아 해당 작업을 별도의 스레드에서 비동기적으로 실행합니다. join() 메서드는 해당 비동기 작업이 완료될 때까지 현재 스레드를 블록시킵니다.
예제 2: CompletableFuture로 비동기 작업 결과 처리
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureExample {
public static void main(String[] args) throws ExecutionException, InterruptedException {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
return "비동기 작업 결과";
});
// 비동기 작업이 완료되면 결과 출력
System.out.println("비동기 작업 결과: " + future.get());
}
}
출력 결과:
비동기 작업 결과: 비동기 작업 결과
CompletableFuture 설명:
두 번째 예제에서는 CompletableFuture의 supplyAsync() 메서드를 사용하여 비동기 작업을 수행하고, 작업이 완료된 후 결과를 가져옵니다. 이때 get() 메서드는 비동기 작업의 결과를 반환하며, 해당 작업이 완료될 때까지 현재 스레드를 블록시킵니다.