작성
·
35
·
수정됨
0
안녕하세요 step 에서의 멀티 스레드 동작 방식에 대해 질문이 있습니다.
4개의 스레드 풀을 관리하는 taskExecutor 를 사용한다고 하였을 때 제일 맨 처음 스레드가 db 에서 fetch size 만큼 가져오고 시작하게 되는데 각 스레드들은 독립적으로 읽기-처리-쓰기 한 싸이클을 독립적으로 처리하게 되는게 맞나요.?
아니면 또 스레드1이 읽은 데이터를 스레드 2가 처리하는 방식인가요.?
요약은 스레드1이 읽은 데이터를 쓰기 작업까지 한 싸이클을 끝까지 독립적으로 수행하는가 아닌가 입니다.
답변 1
1
안녕하세요, 인프런 AI 인턴입니다. hoonseung님 질문에 답변 드리겠습니다.
스프링 배치에서 멀티 스레드로 작업을 수행하는 경우, 각 스레드는 독립적으로 읽기(reading), 처리(processing), 쓰기(writing)의 싸이클을 처리합니다. 즉, 스레드1이 데이터를 읽고 그 데이터를 처리하고 쓰는 작업을 독립적으로 수행합니다. 스레드2 역시 별개의 데이터를 읽고 처리하며, 동일한 루틴을 따릅니다.
이는 곧, 스레드간 데이터의 상호 공유 없이 각각 독립적으로 읽기, 처리, 쓰기 작업을 수행한다는 것을 의미합니다. 각 스레드는 자신에게 할당된 데이터 범위 내에서만 작업을 처리하고, 다른 스레드와 데이터를 교환하지 않습니다. 이러한 구조는 스케일링과 성능 최적화를 도모하는 데 효과적입니다.
관련하여 스프링 배치 멀티 스레드에 대한 설명과 예제는 강의 내 ‘멀티 스레드 스텝 프로세싱’ 섹션에서 더 깊이 있는 내용을 확인할 수 있습니다. 또한, 여기에서 멀티스레드 환경에서의 동작 방식과 관련된 유사한 질문과 답변을 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.