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();
}