Malti thread5

Preview:

DESCRIPTION

マルチスレッド

Citation preview

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

第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:テーブル

Recommended