『増補改訂版 Java 言語で学ぶデザインパターン入門 マルチスレッド編』 結城 浩 著

マルチスレッドの基本を勉強するための本を探していたところ、知り合いに本書を薦められたので読んでみました。 もともと本書の存在は知っていて、デザインパターンの本ということでマルチスレッドの勉強には向かないんじゃないかと敬遠してたんですが、実際にはマルチスレッドの入門書としてすごく良い本でした。

マルチスレッドプログラミングで気をつけるべきところを体系的に学べる実践的入門書

本書はマルチスレッドに関するデザインパターンを説明した書籍です。 デザインパターンというと入門書よりもちょっと敷居が高い感じがしますが、そんなことはありません。 本書ではマルチスレッドプログラミングを行う際に 必ず使うであろう基本的な処理をパターン化したもの (具体的には、クリティカルセクションを同時に読み書きしないように排他処理をする、ということなど) から順に説明を行っていますので、マルチスレッドプログラミングの入門書として最適です。

マルチスレッドプログラミングをする際に気をつけるべきことと、実際にどう実装すればいいのか、ということをパターン化しており、実践的な内容となっています。 また、「なぜそれをする必要があるのか」 ということや 「もしそれをしなかったらどういう問題が起こるのか」 といったことを丁寧に説明していますので、マルチスレッドプログラミングの経験がない人でも理解しやすいと思います。 サンプルプログラムのソースコードのうち重要な部分を網掛けなどで強調しているのもわかりやすくて良かったです。

Java で使えるのはもちろんのこと Java 以外の言語でも有用

本書では Java を題材にしていますので、Java の基本的な部分は知っておかないと読み進めるのは困難です。 しかし、本書の内容は Java でしか使えないものではなく、どんな言語でもマルチスレッドプログラミングをする際には参考になるものです。 本書では 「Java ではどう実装するか」 を説明していますので、他の言語でどのように実装するかは自分で調べる必要がありますが、「マルチスレッドプログラミングをする際にどういうことを気をつければいいのか」 ということは本書を読んで学ぶことができます。

Java ではどう実装すればよいかという実践的な内容を説明しながら、言語に縛られないマルチスレッドに関する原則的な説明もしているのが本書の特徴だと思います。

java.util.concurrent パッケージの説明も

J2SE 5.0 ではマルチスレッドで動作させる際に便利なクラスライブラリ java.util.concurrent パッケージが追加されました。 本書ではこのクラスライブラリに含まれるクラスの使い方をサンプルプログラムにからめて説明しています。 (サンプルプログラムを java.util.concurrent パッケージのクラスを使って書き直すとどうなるか、など。)

本書を読んだだけで java.util.concurrent パッケージを使いこなせるようになるわけではありませんが、パッケージの一部のクラスの使い方を知れるだけでも意味のあることだと思います。

マルチスレッドプログラミングの入門者から初心者にオススメです

本書は 「デザインパターン入門」 と銘打たれているので、マルチスレッドプログラミングの経験者がデザインパターンを学ぶための本かと思ってしまいますが、実際にはマルチスレッドプログラミングの入門書にふさわしい内容になっています。 マルチスレッドプログラミングなんて経験したことがないという入門者や、マルチスレッドプログラミングはちょっとやったことがあるけどいまいちよくわかっていない、という初心者の人にオススメします。