量産メモ帳

忘れっぽいのでメモを残しています。浅く適当に書きます。

Java5.0の新機能。

スポンサーリンク

中村実氏のブログより。

Tiger (Java2 SE 1.5) で追加された並列プログラミング機能


今更、気づきました。。。
確かに 1.5 になったら java.util.concurrent というパッケージが増えてた。
Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle
Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle
Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle


とりあえず、内容を理解するにあたっていくつか聞き慣れない言葉があったので、自分なりに解釈してみた。

  • アトミック操作:不可分操作とも言うらしい。ここでは synchronized を使わないで同期を取ることを意味してるんだろうと解釈。
  • Blocking:スレッドの同期を取るのに synchronized を使う。
  • Wait-free:スレッドの同期を取るのにアトミック操作を使う。
  • Lock:ロック。ミューテックス。読んで字の如し。
  • Semaphoreセマフォ。スレッドが、あるリソースに対して同時にアクセスできる上限を設けたクラス。
  • ランデブー:複数のスレッドがある場所で落ち合う(待ち状態になる)こと?
  • CountDownLatch:カウンタが 0 になるまでスレッドを待機させるクラス。
  • CyclicBarrier:指定した数のスレッドが出揃ったら処理を再開させるクラス?
  • Exchanger:2つのスレッドがある場所で一緒になったらオブジェクトを交換するクラス。


ところで上述のブログの中で ConcurrentLinkedQueueConcurrentHashMap というクラスが、オブジェクトのロックではなくアトミック操作を使ってスレッドセーフを実現していると書かれてあったので、どんなことをしてるんだろうと思い、ソースを追ってみたところ、sun.misc.Unsafe というクラスに行き着いたが、メソッドは native だし、おまけに API ドキュメントもなさそうなので、諦めました。


でもあまりマルチスレッドプログラムを書く機会はないけど、機会があれば、是非使ってみようと思いましたね。