[java] 자바 함수형 인터페이스를 사용하여 비동기적인 작업을 처리하는 방법은 어떻게 되나요?
자바 8부터 함수형 인터페이스(Functional Interface)를 사용하여 비동기적인 작업을 처리하는 것이 가능해졌습니다. 이를 통해 간편하고 가독성 있는 비동기 코드를 작성할 수 있습니다.
자바에서는 java.util.concurrent
패키지에 있는 CompletableFuture
클래스를 사용하여 비동기 작업을 처리합니다. CompletableFuture
는 비동기 작업의 결과를 나타내는 객체로, 비동기 작업이 완료되었을 때 원하는 동작을 수행할 수 있습니다.
아래는 CompletableFuture
를 사용하여 비동기적인 작업을 처리하는 예시 코드입니다.
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class AsyncExample {
public static void main(String[] args) throws InterruptedException, ExecutionException {
// 비동기 작업 생성
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 비동기 작업 내용
//...
return "비동기 작업 결과";
});
// 비동기 작업이 완료되면 결과를 가져와서 처리
future.thenAccept(result -> {
System.out.println("비동기 작업 결과: " + result);
});
// 비동기 작업이 완료될 때까지 대기
future.get();
}
}
위 코드에서 CompletableFuture.supplyAsync()
메서드를 사용하여 비동기 작업을 생성합니다. 작업은 람다 표현식으로 정의되어 있으며, 비동기 작업의 결과를 반환합니다.
future.thenAccept()
메서드를 통해 비동기 작업이 완료되었을 때 원하는 동작을 수행할 수 있습니다. 이 예시에서는 결과를 출력하는 동작을 정의하였습니다.
마지막으로 future.get()
메서드를 호출하여 비동기 작업이 완료될 때까지 대기합니다.
자바의 함수형 인터페이스와 CompletableFuture
를 사용하면 비동기적인 작업을 더욱 편리하게 처리할 수 있습니다. 자세한 내용은 자바 공식 문서를 참고하시기 바랍니다.