최종 연산 호출 전까지는 중간 연산이 실행이 되지 않는 걸 말한다. 즉, 필요할 때까지 기다렸다가 중간 연산이 실행되기 때문에 불필요한 연산이 실행되지 않는다. 예를 들어 최종 연산이 없으면은 아에 그 스트림은 실행되지 않는다.
하나의 중단 연산이 실행될 때 모든 데이터를 다 돌리는 게 아니라 한 번에 한 요소씩 돌리는 걸 말한다. 공장의 조립 라인을 생각하면 된다. 자동차를 한 자리에서 다 조립하는 게 아닌, 한 대의 자동차가 생상 공정 라인을 차례대로 거치면서 완성되어가는 걸 생각하면 된다. 이렇게 하면 너무 많은 데이터가 있을 때 다돌지 않고 필요한 부분만 돌릴 수 있다.
최적화 때문에 필요하다. 예를 들어 findFirst()라는 조건에 일치하는 요소 중 가장 첫 번째 요소만 취하는 건데, 파이프 라인, 지연 연산이 없을 경우 첫 번째 요소가 나왔음에도 모든 데이터를 다 돌아야 한다. 반대로 둘 다 있으면 모든 요소를 돌지 않고 필요한 요소만 딱 받고 나올 수 있다. 즉 필요한 연산만 하는 단축 평가가 가능해지고 메모리 효율도 좋아진다.