[java] 자바 함수형 인터페이스를 사용하여 시간을 측정하는 방법은 어떻게 되나요?
시간을 측정하는 일반적인 방법은 System.currentTimeMillis()
메소드를 사용하여 시작 시간과 종료 시간을 측정하고 두 시간의 차이를 계산하는 것입니다. 그러나 이 방법은 번거롭고 가독성이 떨어질 수 있습니다.
이를 해결하기 위해 자바 8부터는 함수형 인터페이스인 Supplier<T>
를 사용하여 시간을 측정하는 방법이 제공됩니다. Supplier<T>
는 매개변수 없이 결과값을 반환하는 함수형 인터페이스로, 시간 측정을 위해 사용할 수 있습니다.
다음은 함수형 인터페이스를 사용하여 시간을 측정하는 예제 코드입니다:
import java.util.function.Supplier;
public class TimeMeasurement {
public static void measureTime(Supplier<Void> action) {
long startTime = System.currentTimeMillis();
action.get();
long endTime = System.currentTimeMillis();
long elapsedTime = endTime - startTime;
System.out.println("총 소요 시간: " + elapsedTime + "밀리초");
}
public static void main(String[] args) {
// 시간을 측정할 코드를 람다 표현식으로 전달합니다.
measureTime(() -> {
// 측정하고자 하는 코드를 작성합니다.
for (int i = 1; i <= 1000000; i++) {
System.out.println(i);
}
return null;
});
}
}
위 코드에서 measureTime
메소드는 Supplier<Void>
인터페이스를 매개변수로 받습니다. 이 메소드는 시작 시간과 종료 시간을 측정하고, 측정하고자 하는 코드를 실행하고, 소요된 시간을 출력합니다.
measureTime
메소드를 호출할 때 람다 표현식을 사용하여 측정하고자 하는 코드를 전달합니다. 위 예제에서는 1부터 1000000까지의 숫자를 출력하는 부분을 측정하고 있습니다.
실행 결과로는 총 소요 시간이 출력되며, 필요에 따라 이 값을 다른 로직에 활용할 수도 있습니다.
이처럼 자바에서는 함수형 인터페이스를 사용하여 코드 실행 시간을 측정할 수 있습니다. 함수형 프로그래밍의 장점을 활용하여 가독성 좋은 코드를 작성할 수 있습니다.