多线程设计模式(四):生产者-消费模式
一、架構(gòu)模式圖:
類圖:
生產(chǎn)者:提交用戶請求,提取用戶任務(wù),并裝入內(nèi)存緩沖區(qū);
消費(fèi)者:在內(nèi)存緩沖區(qū)中提取并處理任務(wù);
內(nèi)存緩沖區(qū):緩存生產(chǎn)者提交的任務(wù)或數(shù)據(jù),供消費(fèi)者使用;
任務(wù):生產(chǎn)者向內(nèi)存緩沖區(qū)提交的數(shù)據(jù)結(jié)構(gòu);
Main:使用生產(chǎn)者和消費(fèi)者的客戶端。
?
二、代碼實(shí)現(xiàn)一個(gè)基于生產(chǎn)者-消費(fèi)者模式的求整數(shù)平方的并行計(jì)算:
(1)Producer生產(chǎn)者線程:
?
[java]?view plaincopy?
?
?
?
(2)Consumer消費(fèi)者線程:
?
[java]?view plaincopy?
?
?
?
(3)PCData共享數(shù)據(jù)模型:
[java]?view plaincopy?
(4)Main函數(shù):
[java]?view plaincopy?
三、注意:
????volatile關(guān)鍵字:Volatile修飾的成員變量在每次被線程訪問時(shí),都強(qiáng)迫從共享內(nèi)存中重讀該成員變量的值。而且,當(dāng)成員變量發(fā)生變化時(shí),強(qiáng)迫線程將變化值回寫到共享內(nèi)存。這樣在任何時(shí)刻,兩個(gè)不同的線程總是看到某個(gè)成員變量的同一個(gè)值。
????生產(chǎn)-消費(fèi)模式的核心組件是共享內(nèi)存緩沖區(qū),是兩者的通信橋梁,起到解耦作用,優(yōu)化系統(tǒng)整體結(jié)構(gòu)。
????由于緩沖區(qū)的存在,生產(chǎn)者和消費(fèi)者,無論誰在某一局部時(shí)間內(nèi)速度相對較高,都可以使用緩沖區(qū)得到緩解,保證系統(tǒng)正常運(yùn)行,這在一定程度上緩解了性能瓶頸對系統(tǒng)系能的影響。
轉(zhuǎn):http://blog.csdn.net/lmdcszh/article/details/39699261
轉(zhuǎn)載于:https://www.cnblogs.com/duanxz/p/5143186.html
總結(jié)
以上是生活随笔為你收集整理的多线程设计模式(四):生产者-消费模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用DOM解析XML
- 下一篇: js设计模式-组合模式