woowacourse-study / 2022-modern-java-in-action

우아한테크코스 4기 모던 자바 인 액션 스터디
10 stars 4 forks source link

병렬화란 무엇이고 장단점은 뭐가 있을까? #7

Open injoon2019 opened 2 years ago

injoon2019 commented 2 years ago

문제

1장에서 스트림에서 멀티코어 얘기와 함께 병렬화 얘기가 많이 나온다. 그렇다면 병렬화가 무엇이고 장단점은 뭐가 있을까?

선정 배경

이 책에서는 멀티코어 컴퓨터의 보급과 병렬화에 대한 필요성 때문에 스트림이 나온 것처럼 설명하고 있다. 그렇다면 병렬화는 무엇인지 자세히 알아볼 필요가 있다.

관련 챕터

injoon2019 commented 2 years ago

여러 개의 연산을 처리해야하는데, 그 연산들이 서로 의존성이 없으면 나머지 연산을 기다리지 않고 동시에 수행하는 것이 병렬 컴퓨팅의 기본 개념이다. 여기서 동시에 수행할 수 있는 대상을 찾는 것이 시작점이고, 이 일련의 과정을 병렬화라고 한다.

멀티 코어는 여러 개의 작업을 각 코어에 나누어 분배하여 병렬 처리가 가능하다.

멀티코어 환경에서는 컴퓨터가 알아서 병렬처리를 해 주는 것이 아니라, 프로그램을 구현할 때 동시에 수행될 수 있는 대상을 찾아 쓰레드를 만드는 작업, 쓰레드 간의 자원경쟁을 해소하기 위한 동기화 작업 등을 반드시 수행해줘야 한다.

하지만 병렬화 대상을 찾기 위해서, 또는 파이프라인을 적당한 크기로 나누기 위해서 비용이 많이 든다.

이펙티브 자바 아이템 48을 참고하여, 병렬화는 신중하게 하자.