本日読了。
増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/03/21
- メディア: 大型本
- 購入: 15人 クリック: 287回
- この商品を含むブログ (206件) を見る
前著と異なり、今回は筆者がセレクトしたパターンとのことで、どれも有用である。
「デザインパターン」はベストプラクティス集であり、解こうとしている問題に対して、いくつかの選択肢があり、問題特性に応じたメリデメの中から選択するのかと思っていた。ところが、今回は、1つの大きなパターン(Active Object)の中の要素をそれぞれパターンと呼んでおり、どこまで真面目に実装するかが選択の基準になっているようだ。基本的に正解は1つ。「マルチスレッド」という問題領域を限定しているため、このようになっていのかもしれない。といったことを考えながら読んでいたら、まとめの章で、全体は1つのパターンですよ、と書いてあった。
- Single Threaded Execution−この橋を渡れるのは、たった1人
- Immutable−壊したくとも壊せない
- Guarded Suspension−用意できるまで、待っててね(P-SパターンのChannelに相当)
- Balking−必要なかったら、やめちゃおう(定期実行するバックグラウンド処理)
- Producer-Consumer−わたしが作り、あなたが使う(真ん中はChannelと呼ぶとのこと-> Mediatorの方が一般的ではと思うが、Mediatorパターンと区別を明確にしているみたい)
- Read-Write Lock−みんなが読んでもいいけれど、読んでる間は書いちゃだめ
- Thread-Per-Message−この仕事、やっといてね
- Worker Thread−仕事がくるまで待ち、仕事がきたら働く(Thread Pool)
- Future−引換券を、お先にどうぞ(非道的での結果受け渡し)
- Two-Phase Termination−あとかたづけしてから、おやすみなさい(Graceful shutdown、wait/sleepの場合もあるのでinterruptしてね)
- Thread-Specific Storage−スレッドごとのコインロッカー(これはImmutableと使い分けか)
- Active Object−非同期メッセージを受け取る、能動的なオブジェクト(全体の総合)