アル中プログラマの備忘録。もはやコーディングしてないけど。

酔いどれまさになう。プログラマとして就職し、システムエンジニア、プロジェクトマネージャーと立場を変えながら、システム開発に関わるとあるアル中の成長記録。

システム開発

「増補改訂版 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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

入り口

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

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

読書会

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

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

アイコン

カイゼンとユトリ

ゆとりの法則 15年以上前の本ですが、読んだのは数年前です。 最近スクラムについて勉強する機会がありますが、 「リソース最適化」と「フロー最適化」の違いと同じように思えます。 特に最近は、ふりかえりを …

体系的に学ぶ安全なWebアプリケーションの作り方〜脆弱性が生まれる原理と対策の実践〜

体系的に学ぶ 安全なWebアプリケーションの作り方 Kindle版の方が安かったため、そちらを買いましたが、適宜参照しやすい紙の方を買ったほうが良かったです。 主なサンプルコードはPHPで書かれていま …

お菓子

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

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

カテゴリー