[java] 함수형 인터페이스를 사용하여 비동기적인 작업을 다루는 방법은 어떻게 되나요?
자바 8부터는 함수형 인터페이스를 사용하여 비동기적인 작업을 쉽게 다룰 수 있습니다. 함수형 인터페이스는 단일 추상 메서드를 가지는 인터페이스를 말하며, 람다식과 함께 사용되어 편리한 비동기 처리를 할 수 있습니다.
비동기 작업을 다루기 위해서는 CompletableFuture 클래스를 사용할 수 있습니다. CompletableFuture는 자바 8에서 추가된 클래스로, 비동기적인 작업을 쉽게 구현할 수 있는 기능을 제공합니다.
아래는 CompletableFuture를 사용하여 비동기 작업을 다루는 예제 코드입니다.
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class AsyncExample {
public static void main(String[] args) {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 비동기 작업 처리 로직
// 작업이 완료되면 결과를 반환
return "비동기 작업 결과";
});
future.thenAccept(result -> {
// 비동기 작업 완료 후 처리할 로직
System.out.println("비동기 작업 결과: " + result);
});
try {
future.get(); // 작업이 완료될 때까지 대기
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
위의 코드에서는 CompletableFuture의 supplyAsync
메서드를 사용하여 비동기 작업을 정의합니다. 이 메서드는 인자로 전달된 람다식을 비동기적으로 실행하고, 작업이 완료되면 결과를 반환합니다.
thenAccept
메서드는 작업이 완료된 후 처리할 로직을 정의합니다. 위의 예제에서는 결과를 출력하는 간단한 로직을 정의하였습니다.
마지막으로 future.get()
메서드를 호출하여 작업이 완료될 때까지 대기합니다. 이를 통해 비동기 작업이 모두 완료될 때까지 메인 스레드가 블로킹되는 것을 방지할 수 있습니다.
더 자세한 내용은 자바 공식 문서나 관련 참고 자료를 참고하시면 도움이 될 것입니다.