並列処理の教科書
★★★★★
並列処理や Thread について勉強しようと思ってこの一冊を購入した。
読んでみたら、Bloch のEffective Java と並ぶ貴重な内容だった。
書き方というえば、
サーバーアプリなどの典型的な問題をあげて、
駄目な解決法から、正解まで、微妙なコードも紹介しながら話を進めていくスタイル。
コードの例も多くて、 幸いに実効できる長いプリントではなく、解決法に集中したリスティング。
Concurrency は、 Generics のように綺麗に定義できる問題ではなく、CPU、Memory, Database といったリソースやアプリのジックと密接に絡まれる問題であることは、 この本で分かった。 そして、Concurrent プログラミングを身につけるためには並列処理の理解が一番重要。
多量のリソースをどのように多量の処理に使用できる?
問題点を上手く説明して、解決法も紹介してくれる大満足の一冊。
Effective Java と一緒に参考として机の上に置くことにした。
すばらしい
★★★★★
Javaを使った並行プログラミングの初中級から上級へ向けたガイドブック。Thread、Runnable周辺のAPIや、競合状態、デッドロックといった概念、synchronizedやReentrantLockを知らずにこの本を読み始めるのは苦しいと思う。そういう意味で初中級からがターゲットかと。この本を一冊マスターすれば他にスレッド関連の本を読む必要はない程充実した内容。何となくスレッドプログラミングをしているレベルを脱するのに最適。
普通のJavaプログラマから一歩抜け出したい人必読
★★★★★
Java界のオールスターと呼ばれるメンバーが書いただけあり、
非常に深いところまで正確に説明がなされています。
たとえば、並列アクセスされる値にvolatileを付けておけば、
とりあえずは安心だと思っている方がけっこういますが、これは間違いです。
volatileが保証するのは、スレッドのキャッシュを読まないで常に最新の値を返すことだけであり、
インクリメント等の書込みはアトミックな処理になりません。
したがって"static volatile int counter"とした上で"counter++"としてはいけないのです。
このようなことをもっと知りたい方は、ぜひご一読ください。