inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍

'병렬스트림 사용시 주의점1' 중 I/O 바운드 작업은 '소요시간이 긴 작업'으로 이해해도 될까요?

해결된 질문

88

송진우

작성한 질문수 13

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? - 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? - 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? - 예

[질문 내용]

안녕하세요, 강의 즐겁게 듣고 있습니다.

좋은 5월 보내시길 바랍니다. 감사합니다.

java 함수형-프로그래밍 lambda optional

답변 2

1

김영한

안녕하세요. 백엔드해야지님

AI 인턴이 잘 답변을 해주었는데요.

추가로 말씀드리자면 Fork/Join 공용 풀을 I/O 바운드 작업에 사용하지 말라고 경고하는 것은 단순히 '소요 시간이 길기 때문'만은 아닙니다. I/O 바운드 작업이 긴 시간 동안 CPU를 사용하지 않고 대기한다는 특성이, CPU 코어 수에 맞춰 스레드 수가 제한된 공용 풀의 자원을 비효율적으로 점유하여 전체 시스템의 병목을 유발하기 때문입니다. 결국 CPU도 사용하지 않고, 스레드만 대기하기 때문입니다.

긴 작업이어도 CPU를 충분히 소모하는 작업이라면 괜찮다 생각합니다.

감사합니다.

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 백엔드해야지님.

질문해주신 내용에 대해 답변드리겠습니다.

I/O 바운드 작업은 일반적으로 CPU보다는 외부 장치나 네트워크와 같은 입출력 작업에 의존도가 높은 작업을 의미합니다. 이러한 작업들은 실제로 CPU를 많이 소모하지 않지만, 데이터 입출력의 지연으로 인해 시간이 많이 소요될 수 있습니다. 따라서, “소요 시간이 긴 작업”이라는 것은 I/O 바운드 작업의 특성상 발생할 수 있는 결과 중 하나로 볼 수 있습니다. 하지만, I/O 바운드 작업을 단순히 “소요시간이 긴 작업”으로만 이해하는 것은 다소 제한적일 수 있습니다.

강의에서 언급된 ‘Fork/Join 프레임워크를 I/O 바운드 작업에 사용하지 않는다’는 것은 프레임워크의 효율적인 사용을 위해 주로 CPU 집중적인 작업에 활용하는 것이 적합하다는 뜻입니다. 왜냐하면, I/O 바운드 작업을 처리하는 동안 스레드가 대기 상태가 되거나 블로킹될 수 있기 때문에, 한정된 수의 스레드 풀에서 비효율이 발생할 수 있습니다.

따라서, I/O 바운드 작업은 스레드가 대기를 해야 하는 상황이 많기 때문에, 이러한 작업을 병렬처리 프레임워크에 포함시키면 CPU를 활용하지 못한 채로 스레드가 잠시 동안 활용되지 않게 될 위험이 있습니다. 이는 스레드 풀의 한계와 맞물려 결과적으로 더 큰 부작용을 야기할 수 있습니다.

강의의 설명은 이러한 실행상의 맥락에서 나왔을 가능성이 높습니다. 소요시간이 길어지는 이유가 CPU를 집중적으로 사용해서가 아니라, 주로 데이터 입출력의 지연 때문이라는 점을 염두에 두시면 좋을 것 같습니다.

질문해주신 내용을 통해 학습에 도움을 드릴 수 있었길 바랍니다. 좋은 하루 보내세요! 😊

출처: Spring Boot Reference Documentation - IO

db sql vs java stream 비교 궁금증 알려주세요!

1

70

1

파라미터 구분이 안되는지..?

0

67

1

자바 21 버전을 꼭 써야하나요??

0

143

2

9. 스트림 API3-컬렉터 오타?

0

77

2

(추석 챌린지) 복습 정리내용

0

94

1

람다 궁금한 점

0

69

2

스트림과 for문 질문

0

41

1

디폴트 메서드를 사용한 리펙토링

0

51

1

실무에서의 커스텀 Collector 사례 여부

0

62

1

IntelliJ 한글 깨지는 현상 문의

0

194

1

함수형 프로그래밍 적용 범위/원칙

0

59

1

스트림에 대해서 질문(float)은 사용하는지

0

55

1

[자료 패키지 누락] 2.람다 자료에서 문제 패키지명 생략 (25page)

0

60

2

지연 평가

0

68

1

메서드 시그니처

0

99

3

고급편 우선순위

0

129

3

스프링 데이터 JPA 인터페이스에서의 default 메서드 사용

0

112

2

독립적인 스레드 할당 시 스레드 개수는 어떻게 할당해야 할까요?

0

85

1

병렬 프레임 병목 현상 해결책에 대해 궁금한 점

0

101

1

스트림 중복 에러 관련 질문

0

69

1

자바 버전이 31 까지 업데이트 된다면 새로운 자바 강의를 추가 하실 건가요?

0

132

1

임계값과 스레드수를 줄일 경우 교착상태가 발생할수 있는건가요?

0

100

2

변수 합치기에 대해서 질문드립니다!

0

80

2

flatMap 응용 방법에 대해서, 이렇게 하는게 맞는지?

0

122

1