生產者消費者模型具體來說,就是在一個系統中,存在生產者和消費者兩種角色,他們經過內存緩衝區進行通訊,生產者生產消費者須要的資料,消費者把資料作成產品。生產消費者模式以下圖。html
在日益發展的服務類型中,譬如註冊用戶這種服務,它可能解耦成好幾種獨立的服務(帳號驗證,郵箱驗證碼,手機短信碼等)。它們做爲消費者,等待用戶輸入數據,在前臺數據提交以後會通過分解併發送到各個服務所在的url,分發的那個角色就至關於生產者。消費者在獲取數據時候有可能一次不能處理完,那麼它們各自有一個請求隊列,那就是內存緩衝區了。作這項工做的框架叫作消息隊列。數組
生產者是一堆線程,消費者是另外一堆線程,內存緩衝區可使用List數組隊列,數據類型只須要定義一個簡單的類就好。關鍵是如何處理多線程之間的協做。這其實也是多線程通訊的一個範例。多線程
在這個模型中,最關鍵就是內存緩衝區爲空的時候消費者必須等待,而內存緩衝區滿的時候,生產者必須等待。其餘時候能夠是個動態平衡。值得注意的是多線程對臨界區資源的操做時候必須保證在讀寫中只能存在一個線程,因此須要設計鎖的策略。併發
下面這個例子是書上介紹的,生產者負責生產一個數字並存入緩衝區,消費者從緩衝區中取出數據而且求出它的平方並輸出。框架
轉載: https://www.cnblogs.com/chentingk/p/6497107.htmlurl