malti thread7
DESCRIPTION
Javaで学ぶデザインパターン入門 Thread Per MessageTRANSCRIPT
デザパタ入門 マルチスレッド編
第5章 鈴木雄登
ProducerConsumer• 登場人物
Producer Consumer
Table• こんな感じ
• 乗せられるのは3つまで
一般的には ケーキ:Data
テーブル:Channel
main• セットアップ ケーキを置くテーブル
Producer• 作る人
Producer
ケーキ作成
Consumer• 消費する人
Consumerケーキ消費
put
ガード条件
ケーキを置く操作
take
ガード条件
ケーキを取る操作
守られる安全性• ProducerとConsumerを直接やりとりさせない
• 利点
• コックがケーキを余分に作って置いておける
• コックとお客さんが独立する
• テーブルを広げれば、簡単にスケールもできる
consumerが単数• 「複数のコック」と「一人のお客」
• 実装が楽になり、パフォーマンスも上がる
• なぜ?
• アクセスがお客のみの部分に対し、排他制御を消せる
• 「イベント・ディスパッチング・スレッド」と呼ぶ
おまけ
• Producer-Consumerパターンが定義されているインターフェース
• java.util.concurrent.BlockingQueue
まとめ
• Producer:コック
• Consumer:お客さん
• Data:ケーキ
• Channel:テーブル