SlideShare a Scribd company logo
1 of 12
Download to read offline
デザパタ入門
マルチスレッド編
第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:テーブル

More Related Content

Viewers also liked

【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.jsYuto Suzuki
 
ロジスティック回帰
ロジスティック回帰ロジスティック回帰
ロジスティック回帰Yuto Suzuki
 
F.O.Xを支える技術
F.O.Xを支える技術F.O.Xを支える技術
F.O.Xを支える技術Yuto Suzuki
 
Slackから始めるChatOps
Slackから始めるChatOpsSlackから始めるChatOps
Slackから始めるChatOpsYuto Suzuki
 
Los mejores lugares de medllin
Los mejores lugares de medllinLos mejores lugares de medllin
Los mejores lugares de medllinobheruiz
 
Hector david ruiz
Hector david ruizHector david ruiz
Hector david ruizobheruiz
 
Cartilha coleta seletiva solidaria cruz alta
Cartilha coleta seletiva solidaria cruz altaCartilha coleta seletiva solidaria cruz alta
Cartilha coleta seletiva solidaria cruz altapamelagonzzalezz
 
統計勉強会LT 機械学習とは
統計勉強会LT 機械学習とは統計勉強会LT 機械学習とは
統計勉強会LT 機械学習とはYuto Suzuki
 

Viewers also liked (10)

PRML 2.3
PRML 2.3PRML 2.3
PRML 2.3
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
 
ロジスティック回帰
ロジスティック回帰ロジスティック回帰
ロジスティック回帰
 
Api設計
Api設計Api設計
Api設計
 
F.O.Xを支える技術
F.O.Xを支える技術F.O.Xを支える技術
F.O.Xを支える技術
 
Slackから始めるChatOps
Slackから始めるChatOpsSlackから始めるChatOps
Slackから始めるChatOps
 
Los mejores lugares de medllin
Los mejores lugares de medllinLos mejores lugares de medllin
Los mejores lugares de medllin
 
Hector david ruiz
Hector david ruizHector david ruiz
Hector david ruiz
 
Cartilha coleta seletiva solidaria cruz alta
Cartilha coleta seletiva solidaria cruz altaCartilha coleta seletiva solidaria cruz alta
Cartilha coleta seletiva solidaria cruz alta
 
統計勉強会LT 機械学習とは
統計勉強会LT 機械学習とは統計勉強会LT 機械学習とは
統計勉強会LT 機械学習とは
 

More from Yuto Suzuki

5xx解消への道のり
5xx解消への道のり5xx解消への道のり
5xx解消への道のりYuto Suzuki
 
MySQLのインデックス入門
MySQLのインデックス入門MySQLのインデックス入門
MySQLのインデックス入門Yuto Suzuki
 
Mastering Bitcoin ~network~
Mastering Bitcoin ~network~ Mastering Bitcoin ~network~
Mastering Bitcoin ~network~ Yuto Suzuki
 
Aerospike基本のき
Aerospike基本のきAerospike基本のき
Aerospike基本のきYuto Suzuki
 
いまさらAkkaStream
いまさらAkkaStreamいまさらAkkaStream
いまさらAkkaStreamYuto Suzuki
 
Introduction of View Through Tracking
Introduction of View Through TrackingIntroduction of View Through Tracking
Introduction of View Through TrackingYuto Suzuki
 
エンジニアのためのマーケティング
エンジニアのためのマーケティングエンジニアのためのマーケティング
エンジニアのためのマーケティングYuto Suzuki
 
How to Build a Team
How to Build a TeamHow to Build a Team
How to Build a TeamYuto Suzuki
 
プロダクトにおけるScala
プロダクトにおけるScalaプロダクトにおけるScala
プロダクトにおけるScalaYuto Suzuki
 
Do you like scala
Do you like scalaDo you like scala
Do you like scalaYuto Suzuki
 
Scala戦士を増やせ
Scala戦士を増やせScala戦士を増やせ
Scala戦士を増やせYuto Suzuki
 
スクラムに学ぶ開発の回し方
スクラムに学ぶ開発の回し方スクラムに学ぶ開発の回し方
スクラムに学ぶ開発の回し方Yuto Suzuki
 
Deeplearningとは?
Deeplearningとは?Deeplearningとは?
Deeplearningとは?Yuto Suzuki
 
Git LFSを触ってみた
Git LFSを触ってみたGit LFSを触ってみた
Git LFSを触ってみたYuto Suzuki
 

More from Yuto Suzuki (19)

5xx解消への道のり
5xx解消への道のり5xx解消への道のり
5xx解消への道のり
 
MySQLのインデックス入門
MySQLのインデックス入門MySQLのインデックス入門
MySQLのインデックス入門
 
Ad vol.2
Ad vol.2Ad vol.2
Ad vol.2
 
広告勉強会
広告勉強会広告勉強会
広告勉強会
 
Mastering Bitcoin ~network~
Mastering Bitcoin ~network~ Mastering Bitcoin ~network~
Mastering Bitcoin ~network~
 
Aerospike基本のき
Aerospike基本のきAerospike基本のき
Aerospike基本のき
 
いまさらAkkaStream
いまさらAkkaStreamいまさらAkkaStream
いまさらAkkaStream
 
Introduction of View Through Tracking
Introduction of View Through TrackingIntroduction of View Through Tracking
Introduction of View Through Tracking
 
エンジニアのためのマーケティング
エンジニアのためのマーケティングエンジニアのためのマーケティング
エンジニアのためのマーケティング
 
How to Build a Team
How to Build a TeamHow to Build a Team
How to Build a Team
 
プロダクトにおけるScala
プロダクトにおけるScalaプロダクトにおけるScala
プロダクトにおけるScala
 
Do you like scala
Do you like scalaDo you like scala
Do you like scala
 
Re invent
Re inventRe invent
Re invent
 
Scala戦士を増やせ
Scala戦士を増やせScala戦士を増やせ
Scala戦士を増やせ
 
スクラムに学ぶ開発の回し方
スクラムに学ぶ開発の回し方スクラムに学ぶ開発の回し方
スクラムに学ぶ開発の回し方
 
進撃のSbt
進撃のSbt進撃のSbt
進撃のSbt
 
Deeplearningとは?
Deeplearningとは?Deeplearningとは?
Deeplearningとは?
 
Git LFSを触ってみた
Git LFSを触ってみたGit LFSを触ってみた
Git LFSを触ってみた
 
実戦Scala
実戦Scala実戦Scala
実戦Scala