ページ

2010年12月18日土曜日

拾い読み:今まで知らなかった 5 つの事項: マルチスレッド・プログラミング


最新の(2010/11時点)Java Multi Thread 機構の紹介記事です。

初期のJavaのスレッドサポートは酷かったけど(まともなマルチスレッドコーディングしたこと無い人が作ったつぃか思えないレベル)、さすがに時間が経てば熟成してくるものですね。このところJavanoマルチスレッド機構を使う機会がない(考えて見ればJ2EEベースだとまず使いませんね)ので、新機能の紹介は歓迎です。

というか、実際にマルチスレッドプログラム書いている人ってどの程度いるのでしょうね。出初めのころは、ライブラリが対応していません、システムコールが対応していません、ばかりで、まじめにマルチスレッドコードを書こうとするとライブラリレベルから作り直しが要求されたものです。OS/2、WindowsNT系列は出た直ぐからライブラリも含めて対応していましたが、UNIX系はライブラリが対応するまで10年近くかかっていした。OS/2ではマルチスレッドが普通に使われていたようですが、WinNTではUIレベルで待たせる(いわゆる時計マウスポインタ)プログラムが未だに残っていますから。あまりUIの向上方面では使われてず、専らバックエンドのワーカースレッドとして使われているのかもしれません。

Synchronied Methodと Synchronized Block の生成されるコードレベルでの比較は面白いですね。これだけの差がでるのですか。機能的には同じようなものと思っていましたが、実行時レベルではこれだけの差がでるのですね。

ThreadLocal、Volatileあたりは以前からある機能でマルチスレッド使う人には当然の機能です。このあたりは前振りレベルですかね。

美味しいのは最後に紹介されている Atomic Field Updater。これはJava5で導入されたjava.util.concurrentに含まれている機能のようです。というか、java.util.concurrentはマルチスレッドサポートに都合のよい(以前であれば自前で作成していた)機能の集まりのようですね。マルチスレッドから縁遠くなっていたとはいえ、これを知らなかったのは痛恨の極みです。で、このページからのリンクでjava.util.concurrentの紹介記事が二つ。次にはこっちの方をじっくりと読んでみたいと思います。

0 件のコメント:

コメントを投稿