生产者消费者模型的学习
Created by Jerry Wang, last modified on Nov 12, 2014
PRODUCER: PROD2 is running
Thread: CONSUMER2 Consumer thread is running…
Thread: CONSUMER2 fetch data from linkedQueue… queue size: 0 - consumer2 試圖從queue讀取
PRODUCER: PROD3 is running
PRODUCER: PROD1 is running
Thread: CONSUMER1 Consumer thread is running…
Thread: CONSUMER1 fetch data from linkedQueue… queue size: 0 - consumer1試圖從queue讀取
Thread: PROD2 procedued data into queue: data:1 … - producer1生產了1個數據
PRODUCER: PROD2 is running
Thread: CONSUMER2 has consumed one data from queue: data:1 Queue sise: 0 - consumer2 消費了1個數據,消費之后queue 空了
Thread: PROD1 procedued data into queue: data:2 … - thread 1生產了第二個數據
PRODUCER: PROD1 is running
Thread: CONSUMER1 has consumed one data from queue: data:2 Queue sise: 0 - consumer1將第二個數據消費掉了
Thread: PROD3 procedued data into queue: data:3 … - producer生產了第三個數據
PRODUCER: PROD3 is running
Thread: CONSUMER2 fetch data from linkedQueue… queue size: 1
Thread: CONSUMER2 has consumed one data from queue: data:3 Queue sise: 0 - consumer消費了第三個數據
Thread: PROD2 procedued data into queue: data:4 … - producer生產了第四個數據:4
PRODUCER: PROD2 is running
Thread: CONSUMER1 fetch data from linkedQueue… queue size: 1
Thread: PROD1 procedued data into queue: data:5 … - producer生產了第5個數據:5
PRODUCER: PROD1 is running
Thread: PROD3 procedued data into queue: data:6 … - producer生產了第六個數據:6
PRODUCER: PROD3 is running
Thread: CONSUMER1 has consumed one data from queue: data:4 Queue sise: 1 - consumer1消費了4,queue里還剩5,6.
此時consumer1只能看見一個元素
Thread: CONSUMER2 fetch data from linkedQueue… queue size: 2 - consumer2能看見2個元素5,6
Thread: PROD2 procedued data into queue: data:7 … 7生產后,queue里3個元素5,6,7
Thread: PROD2 quit from producer thread
Thread: CONSUMER2 has consumed one data from queue: data:5 Queue sise: 2 -5被消費后,還剩6,7
Thread: PROD1 procedued data into queue: data:8 … - queue里有6,7,8
Thread: PROD1 quit from producer thread
Thread: CONSUMER1 fetch data from linkedQueue… queue size: 2
Thread: CONSUMER1 has consumed one data from queue: data:6 Queue sise: 2 - 6被消費后,還剩7,8
Thread: PROD3 procedued data into queue: data:9 … - 9被生產,queue里7,8,9
Thread: PROD3 quit from producer thread
Thread: CONSUMER2 fetch data from linkedQueue… queue size: 3
Thread: CONSUMER2 has consumed one data from queue: data:7 Queue sise: 2 - queue里還剩8,9
Thread: CONSUMER1 fetch data from linkedQueue… queue size: 2
Thread: CONSUMER1 has consumed one data from queue: data:8 Queue sise: 1 -queue里還剩9
Thread: CONSUMER2 fetch data from linkedQueue… queue size: 1
Thread: CONSUMER2 has consumed one data from queue: data:9 Queue sise: 0 - queue全部消費完,此時也沒有生產者在運行
Thread: CONSUMER1 fetch data from linkedQueue… queue size: 0
Thread: CONSUMER2 fetch data from linkedQueue… queue size: 0
Thread: CONSUMER1 Consumer read queue timeout - 超時退出
Thread: CONSUMER1 consumer thread ends
Thread: CONSUMER2 Consumer read queue timeout - 超時退出
Thread: CONSUMER2 consumer thread ends
如果把consumer的read operation超時間隔改小,比如變成2毫秒,
則消費者等不及生產者往queue里放數據后就讀超時退出了:
如果把生產者的生產數據的時間間隔改小,而scenario變為生產者將所有的數據預先生產完畢,然后消費者逐一消費。
git path: https://github.com/i042416/consumer_producer.git
總結
以上是生活随笔為你收集整理的生产者消费者模型的学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Maven resource artif
- 下一篇: 2023 款比亚迪宋 PLUS EV 车