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