Malti thread5

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

description

マルチスレッド

Transcript of Malti thread5

Page 1: Malti thread5

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

第5章 鈴木雄登

Page 2: Malti thread5

ProducerConsumer• 登場人物

Producer Consumer

Page 3: Malti thread5

Table• こんな感じ

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

一般的には ケーキ:Data

テーブル:Channel

Page 4: Malti thread5

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

Page 5: Malti thread5

Producer• 作る人

Producer

ケーキ作成

Page 6: Malti thread5

Consumer• 消費する人

Consumerケーキ消費

Page 7: Malti thread5

put

ガード条件

ケーキを置く操作

Page 8: Malti thread5

take

ガード条件

ケーキを取る操作

Page 9: Malti thread5

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

• 利点

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

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

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

Page 10: Malti thread5

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

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

• なぜ?

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

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

Page 11: Malti thread5

おまけ

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

• java.util.concurrent.BlockingQueue

Page 12: Malti thread5

まとめ

• Producer:コック

• Consumer:お客さん

• Data:ケーキ

• Channel:テーブル