みけです。
JGGUG G*ワークショップ行ってきました。
ちなみにtogetterとかはこちらにあります。
Rod JohnsonがSpring Sourceを卒業したそうです。
ソース1
ソース2
CSPとは?
今回の目玉はCommunicating Sequential Processes(CSP)です。
Occamなどの言語はCSPの思想から作られているそうです。
ちなみにOcamlではありません。
言語的にはErlangに近いそうです。
なお、日本語の解説ページがあります。
こちらを参照して下さい。
JCSP
CSPモデルをJavaで実装したのが、JCSPです。
jarファイルはMavenおよびGradleから取得可能なようです。
下記を参考にして下さい。
pom.xml
build.gradle
サンプルコード
まあ、僕は文章を書くのが(文卒のくせに)苦手なので、
早速サンプルコードを書いてみました。
(正確にはコピペです。)
で、実行結果がコレ。
ログの出力の仕方からわかるのは、
Parallel
の通信が出力→入力で一対一になっているところですね。
Channel
はQueue
のような溜め込むという操作を提供はしていないようです。
(まあ、そういう
Channel
もあるかもしれませんが…)スレッドの遅い方(
Read
クラス)の速度に合わせて、通信が行われているあたりが特徴的だと思います。
Groovy
Groovyで実行する場合は、
Parallel
クラスがPAR
というgpars
にあるラッパークラスに置き換わるところです。
PARクラスはgparsの中にあるやつか! #jggug
— mike_neckさん (@mike_neck) 7月 6, 2012
結論
java.util.concurrent
パッケージにあるクラスを用いて、同様の処理を書くことができると思いますが、
それに比べると結構簡単に並列処理が書けそうです。
ちょっと面白そうなので、もう少しいじってみたいと思います。
0 件のコメント:
コメントを投稿