더북(TheBook)

3.6.1 지연 실행 구현


람다를 사용하는 핵심 목적은 지연 실행(deferred execution)이다. 결국 어떤 코드를 지금 당장 실행하고 싶다면 굳이 람다로 감쌀 필요 없이 그냥 실행하면 되기 때문이다. 코드를 나중에 실행하는 이유는 다음과 같이 다양하다.

별도의 스레드에서 코드 실행

코드를 여러 번 실행

알고리즘에서 적절한 시점에 코드 실행(예를 들어 정렬에서 비교 연산)

어떤 일(버튼 클릭, 데이터 수신 등)이 일어날 때 코드 실행

필요할 때만 코드 실행


간단한 예를 하나 살펴보자. 어떤 액션을 n번 반복하고 싶다 하자. 다음과 같이 반복 횟수와 액션을 repeat 메서드에 전달한다.

repeat(10, () -> System.out.println("Hello, World!"));


repeat 메서드에서 람다를 받으려면 함수형 인터페이스를 선택(또는 드물게는 구현)해야 한다. 이 예제에서는 간단히 Runnable 인터페이스를 사용하면 된다.

public static void repeat(int n, Runnable action) {

    for (int i = 0; i < n; i++) action.run();

}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.