스트림 병렬화는 주의해서 적용하라

  • 자바 8부터는 parallel메서드만 한 번 호출하면 파이프라인을 병렬 실행할 수 있는 스트림을 지원했다.
  • 동시성 프로그래밍을 할 때와 마찬가지로, parallel을 사용할 때도 안정성(safety)과 응답 가능(liveness) 상태를 유지하기 위해 애써야 한다.
  • 스트림 소스가 ArrayList, hashMap, HashSet, ConcurrentashMap의 인스턴스거나 배열, int 범위, long 범위일 때 병렬화의 효과가 가장 좋다.
  • 스트림을 잘못 병렬화하면 (응답 불가를 포함해) 성능이 나빠질 뿐만 아니라 결과 자체가 잘못되거나 예상 못한 동작이 발생할 수 있다.
  • 병렬화하는 편이 낫다고 믿더라도, 수정 후의 코드가 여전히 정확한지 확인하고 운영 환경과 유사한 조건에서 수행해보며 성능지표를 유심히 간찰하라.
  • 계산도 정확하고 성능도 좋아졌음이 확실해졌을 때, 오직 그럴때만 병렬화 버전 코드를 운영 코드에 반영하라!
Last Updated: 10/31/2020, 4:27:58 PM