システム開発

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」WEB用のデザインパターン

投稿日:

増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編

入門書として

最初のたとえ話がありイメージをつかみやすい。
その後にサンプルのクラス図とシーケンス図、パターンのクラス図を見ればだいたい分かることができる。
それでも難しいところはコードと解説を読めば大丈夫。
結構分厚いので、分かるところまでコードと解説は読まなくても良いかもしれない。

出てくるパターンと概略のメモ

Single Thread Execution

スレッドセーフでない部分にはsynchrinizedなどを使い排他制御をかけましょう。

Immutable

不変であることを保証すれば、スレッドについて気にしなくていいようになります。

Guarded Suspension

whileとwaitで条件が整うまでスレッドを待ちましょう。

Balking

ガード条件が満たされなかったらすぐに中断しましょう。

Producer-Consumer

ProducerがDataを作ってChannelに追加、ConsumerはChannelからデータを取り出して使用するようにします。
Channelはキューやスタック、優先順位付きキューなどです。
追加できないときや取るものがないときは待つようにします。

Read-Write Lock

同時読み込みOKですが、その間は書き込み禁止にし、書いている間は一切禁止とします。
java.utill.concurrent.locks.ReentrantReadWriteLockを使うといいでしょう。

Thread-Per-Message

新しいスレッドに処理を任せて、自分は終了または別の処理をします。

Worker Thread

スレッドを使いまわします。複数のWorker Threadを抱えてるとスレッドプールとも呼びます。
それにより、スループットの向上と、キャパシティの制御になります。呼び出しと実行が分離されます。

Future

処理終了後で結果を取れるようなオブジェクトをすぐに返します。
処理結果を得られるのが利点です。
重い処理の反応性を上げることが出来き、戻り値の用意と利用が分離されます。

Two-Phase Termination

終了処理をきちんとしてから終了しましょう。
Thread.stopは危ないから使ってはいけません。

Thread-Specific Storage

java.lang.ThreadLocalの話です。
他のスレッドからアクセスさせません。
スレッドプログラムにはアクターベースとタスクベースの考え方があります。

Active Object

非同期メッセージのやり取りをします。

感想など

いくつかのパターンは簡単に実装するためのクラスが既にjava.util.concurrentにあり便利です。
concurrentパッケージはじっくり見てみてもいいと思います。

付録Bにシングルトンについての話がありますが、null判定の後にsynchronizedをかけて再度null判定をしているたまに見かけるコードの問題点の説明が面白かったです。
どう問題があるのかは本を読んで下さい。

酔いどれまさになう。


-システム開発

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

Review

設計レビューを効果的に行うには、目的を理解してそれに沿った方法で行おう

レビューあるある 長い 喧嘩してる、槍玉に上げられてる 脱線する 重箱の隅をつついていている 不具合を見つけたけど黙ってる などなど、結果として時間はかかる、気分も悪い、その割には後で不具合が見つかる …

読書会

アジャイルサムライ横浜道場参加記録

アジャイルサムライ横浜道場 説明は以下を参照してください。 https://github.com/agile-samurai-ja/support/wiki/Readingagilesamuraiin …

Jenkins実践入門

Jenkins 執事さん!公式サイトの人で、 CI(Continuous Integration、継続的インテグレーション)のためのサーバー(ソフト、サービス)。 継続的に開発、ビルド、テスト、修正、 …

お菓子

エリック・エヴァンスのドメイン駆動設計(DDD本)読書会

エリック・エヴァンスのドメイン駆動設計(DDD本) の読書会を社内有志で行いました。 その時の記録を残しておきます。 第0回 準備を兼ねた第0回は、スケジュールや進行方法について相談しました。 スケジ …

入り口

Developers Summit 2012に参加してきました

Developers Summit 2012 名称:Developers Summit 2012 (デブサミ2012) 会期:2012年2月16日(木)・17日(金) 会場:目黒雅叙園(東京・目黒) …

カテゴリー