동적 파라미터: 아직 어떻게 실행할 것인지 결정하지 않은 코드블럭
동적 파라미터를 사용하면 프로그램을 변화에 유연하게 짜는것이 쉽다
거의 비슷한 코드가 반복 존재한다면 그 코드를 추상화해서 변화에 유연하게 대응 가능
동적 파라미터화의 강점: 탐색 로직과 각 항목에서 적용할 동작을 분리할 수 있다는 점
filterApples 메서드는 ApplePredicate객체에 의해 결정(filterApples의 동작을 파라미터화 했다)
익명 클래스를 활용해 로직과 관련 없는 코드를 많이 간소화 할 수 있다.
하지만 익명 클래스를 사용해도 코드의 가독성이 나빠 구현하고 유지보수하는데 시간이 오래 걸린다
Comparator을 사용해 다양한 sort 메서드를 구현 가능
자바 스레드를 이용하면 병렬로 코드 블록을 실행 할 수 있다
Runnable을 이용해서 다양한 동작을 스레드로 실행 가능
ExecutorService를 이용하면 테스크를 스레드 풀로 보내고 결과를 Future로 저장 가능
실제 프로그램에서는 다양한 인풋이 존재하고 이를 유연하게 대응할 수 있는 코드가 필요