SeouliteLab

Java에서 CompletableFuture 사용하여 비동기 작업 처리하기 본문

카테고리 없음

Java에서 CompletableFuture 사용하여 비동기 작업 처리하기

Seoulite Lab 2024. 3. 26. 14:02

소개:
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() 메서드는 비동기 작업의 결과를 반환하며, 해당 작업이 완료될 때까지 현재 스레드를 블록시킵니다.