torutkのブログ

ソフトウェア・エンジニアのブログ

Java読書会の日「Java Concurrency In Practice」4回目実施

本日は、Java読書会の日でした。
Java Concurrency in Practice

前回同様、分担を決めて翻訳してきてもらい、当日は翻訳を配布してそれを朗読する形式です。
5.4 Blocking and interruptible method から、6.3 Finding Exploitable parallelismまでが今日の範囲でした。

java.util.concurrentパッケージのいろいろなクラスが登場してきました。Tiger以降は新たなフレームワークが導入され、より安全でスケーラブルなスレッドプログラムを容易に作成できるようになったので、従来のThread/Runnableを直接使うやり方からフレームワークを利用するやり方にシフトさせるべきです。また、java.util.TimerについてもRuntimeException問題や処理を占有するタスクに干渉される問題などがあるため、newFixedThreadPoolを使用する方がよいでしょう。

Java 2 SE 1.4.2環境を余儀なくされている場合でも、http://dcl.mathcs.emory.edu/util/backport-util-concurrent/を利用して同じフレームワークを利用することができます。これは、Java 2 SE 5.0に搭載されているjava.util.concurrentパッケージをJava 2 SE 1.4向けに切り出してパッケージ化したものです。一部Java 2 SE 5.0で追加された言語使用に基づく機能は削られています。最新のbackportパッケージは、Java 6のβ版で追加された機能も含まれています。


高品質なマルチスレッドのプログラムを作るには、熟練したスキルの者が細心の注意を払うことが必要です。練度の低い者が下手なマルチスレッドプログラムを作って、低品質で苦しむ(=コストがかさむ)よりは、質の高い公共の(上記バックポートはpublic domain)資材を活用するほうがはるかによい結果を生みます。


なお、あさ9:00-10:00の時間で実施する「ズームイン・Java」では、「Pattenrs of Enterprise Application Architecture」を読むことに決まりました。
最初はポジションペーパーとか予習とかいろいろ検討していましたが、Java読書会が丸8年続いたところは、「予習いらず気軽に参加」つまりライトウェイトでアジャイルな読書会にあるということで、準備不要でやって行こうと決まりました。