Malti thread7

12
デザパタ入門 マルチスレッド編 第5章 鈴木雄登

description

Javaで学ぶデザインパターン入門 Thread Per Message

Transcript of Malti thread7

Page 1: Malti thread7

デザパタ入門 マルチスレッド編

第5章 鈴木雄登

Page 2: Malti thread7

ProducerConsumer• 登場人物

Producer Consumer

Page 3: Malti thread7

Table• こんな感じ

• 乗せられるのは3つまで

一般的には ケーキ:Data

テーブル:Channel

Page 4: Malti thread7

main• セットアップ ケーキを置くテーブル

Page 5: Malti thread7

Producer• 作る人

Producer

ケーキ作成

Page 6: Malti thread7

Consumer• 消費する人

Consumerケーキ消費

Page 7: Malti thread7

put

ガード条件

ケーキを置く操作

Page 8: Malti thread7

take

ガード条件

ケーキを取る操作

Page 9: Malti thread7

守られる安全性• ProducerとConsumerを直接やりとりさせない

• 利点

• コックがケーキを余分に作って置いておける

• コックとお客さんが独立する

• テーブルを広げれば、簡単にスケールもできる

Page 10: Malti thread7

consumerが単数• 「複数のコック」と「一人のお客」

• 実装が楽になり、パフォーマンスも上がる

• なぜ?

• アクセスがお客のみの部分に対し、排他制御を消せる

• 「イベント・ディスパッチング・スレッド」と呼ぶ

Page 11: Malti thread7

おまけ

• Producer-Consumerパターンが定義されているインターフェース

• java.util.concurrent.BlockingQueue

Page 12: Malti thread7

まとめ

• Producer:コック

• Consumer:お客さん

• Data:ケーキ

• Channel:テーブル