Java 언어로 배우는 디자인 패턴 입문 - 멀티쓰레드 편 (유키 히로시, 2008) 독후감

1 minute read

’멀티스레드 프로그래밍에 능숙하다.’ 무엇을 의미할까? 스레드, 뮤텍스, 세마포어 등등 의미를 알고 조작할 수 있는 API 사용에 능숙한 것? 아니. 그건 분명히 아닐 것이다. 멀티스레딩으로 깨지지 않고 빠르게 돌아가는 디자인을 할 수 있는 능력이라 생각한다.

신나게 클록 속도를 올리다가 발열이 감당이 안 돼서 이제 멀티코어 시대로 넘어왔다. 이 사실은 이제 멀티스레드 프로그래밍 능력은 그냥 당연히 갖춰야 하는 기본 기술이 됐다는 걸 뜻한다. 공짜 점심이 끝나버린 거지. 위에서 말한 멀티스레드 디자인 능력이 부족한 것 같아 기본 서적을 찾던 중에 많이 추천해서 보게 됐다.

어떤 주제를 공부할 때, 큰 그림을 먼저 보고 필요에 따라 세부사항으로 내려가는 Top-down 방식으로 공부할 수도 있고 반대로 세부사항부터 튼튼히 쌓고 위로 올라가는 Bottom-up 방식으로 공부할 수도 있다. 이건 주제에 따라 혹은 개인 취향에 따라 결정된다. 내가 멀티스레드 프로그래밍을 다시 공부할 때 선택한 방법은 Top-down 방식. 큰 그림을 먼저 보고 싶었다. 수많은 프로그래머가 멀티스레드 프로그래밍 디자인에 같은 문제로 고생하고 고민했을 터, 당연히 패턴이 만들어지게 된다. 이 책은 이런 패턴 중에 기초 패턴들을 잘 설명했다.

초보자용으로 많이 추천하는 책인데, 읽고 나니 나도 추천하고 싶다. 내가 주로 쓰는 언어는 C++. Java를 전면에 내세워 책을 살 때 많이 망설였는데, Java에서만 쓸 수 있는 멀티스레드 디자인 패턴을 설명하는 것도 아니니 언어에 그리 얽매일 필요는 없다. 사실 책을 볼 수 있을 정도로 Java를 공부하는 건 필수적이다. 요즘 괜찮은 책들은 다 예제 코드로 Java를 사용한다. 물론 C++로도 책에 나온 예제를 같은 추상화 레벨로 프로그래밍할 수 있다. 우리에겐 boost::thread가 있다.

아꿈사에서 이 책 내용을 요약해서 발표를 했었다.

Update <2017-11-26 Sun> 표지 사진 교체