Java 並行処理プログラミング

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

これは初級レベルのJava本では物足りない方向けの、素晴らしい本。中身は濃いし、さらにBadコードとnot so goodコード、Goodなコードの説明が分かれていてわかりやすい。

複数のスレッドが同じ可変なステート変数に正しい同期化なしでアクセスしているなら、そのプログラムは欠陥プログラムです。なおす方法は三つあります。:
・そのステート変数を複数のスレッドが共有しないようにする。
・そのステート変数を不可変にする。
・そのステート変数へのアクセスをつねに同期化する。(P.18)

この原則を守るためのいろいろな手段がこの本には満載。ただ守るだけでなく、パフォーマンスも十分に考慮された設計も紹介されている。たとえばServletのservice()にsynchronizedをつければ、たとえスレッドセーフなソースコードになったとしても、そんなソースコードは使い物にならない。
非常に視野が広くなったと実感した1冊である。