CopyOnWriteArrayList でリストを安全に更新する

デザインパターン入門 マルチスレッド編 に、マルチスレッドプログラムの評価基準として 安全性 生存性 再利用性 が挙げられている。安全性とはオブジェクトのフィールドが意図した値を保っていることで、安全性が保たれているクラスをスレッドセーフなクラスという。
マルチスレッドプログラミングにおいてオブジェクトを安全に更新するには、操作が競合しないように synchronized などを使った排他制御の工夫が必要。

more »

synchronized メソッドの挙動を JVM のスレッドダンプを見ながら確かめる

最近、趣味で Java 製プロダクトをいじっていたり、デザインパターン入門マルチスレッド編を読んでいることもあって Java のコードを書くようになった。
これまでほぼ PHP しかやってこなかったので java.util.concurrent パッケージ の充実っぷりに衝撃をうけた。これらのクラスを使って分散アルゴリズムの実装に挑戦してみたい。

more »