[java] 함수형 인터페이스를 사용하여 비동기식 이벤트 처리를 구현하는 방법은 어떻게 되나요?
비동기식 이벤트 처리는 대부분의 애플리케이션에서 필수적인 요구사항입니다. 이를 간편하게 구현하기 위해 자바의 함수형 인터페이스를 사용할 수 있습니다. 함수형 인터페이스는 단 하나의 추상 메서드만을 가지며, 람다 표현식으로 구현할 수 있는 인터페이스입니다.
아래는 함수형 인터페이스를 사용하여 비동기식 이벤트 처리를 구현하는 예시입니다.
import java.util.concurrent.*;
public class AsyncEventExample {
public static void main(String[] args) {
ExecutorService executor = Executors.newSingleThreadExecutor();
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
// 비동기로 처리될 이벤트 처리 로직 작성
System.out.println("이벤트 처리 중...");
try {
Thread.sleep(3000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
System.out.println("이벤트 처리 완료");
}, executor);
future.thenRun(() -> {
// 이벤트 처리 완료 후 실행될 로직 작성
System.out.println("이벤트 처리 후 로직 실행");
});
executor.shutdown();
}
}
위 예시에서는 CompletableFuture
클래스를 사용하여 비동기식 이벤트 처리를 구현합니다.
먼저, ExecutorService
를 통해 쓰레드 풀을 생성합니다. 이후 CompletableFuture.runAsync()
메서드를 호출하여 해당 이벤트 처리 로직을 비동기적으로 실행합니다.
future.thenRun()
메서드를 사용하여 이벤트 처리 완료 후 실행될 로직을 작성할 수 있습니다.
마지막으로, ExecutorService
를 종료합니다.
위와 같은 방식으로 함수형 인터페이스를 사용하여 비동기식 이벤트 처리를 구현할 수 있습니다.
참고 자료: