![java生產(chǎn)者消費(fèi)者問(wèn)題_第1頁(yè)](http://file4.renrendoc.com/view/c6665a552c8ccf2deac110d84b65bb1c/c6665a552c8ccf2deac110d84b65bb1c1.gif)
![java生產(chǎn)者消費(fèi)者問(wèn)題_第2頁(yè)](http://file4.renrendoc.com/view/c6665a552c8ccf2deac110d84b65bb1c/c6665a552c8ccf2deac110d84b65bb1c2.gif)
![java生產(chǎn)者消費(fèi)者問(wèn)題_第3頁(yè)](http://file4.renrendoc.com/view/c6665a552c8ccf2deac110d84b65bb1c/c6665a552c8ccf2deac110d84b65bb1c3.gif)
![java生產(chǎn)者消費(fèi)者問(wèn)題_第4頁(yè)](http://file4.renrendoc.com/view/c6665a552c8ccf2deac110d84b65bb1c/c6665a552c8ccf2deac110d84b65bb1c4.gif)
![java生產(chǎn)者消費(fèi)者問(wèn)題_第5頁(yè)](http://file4.renrendoc.com/view/c6665a552c8ccf2deac110d84b65bb1c/c6665a552c8ccf2deac110d84b65bb1c5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
操作系統(tǒng)課程設(shè)計(jì)( )一號(hào)黑體加粗用多進(jìn)程同步方法解決生產(chǎn)者-消費(fèi)者問(wèn)題(小二黑體加粗)院系:班級(jí):學(xué)號(hào):姓名:同組者:時(shí)間:目錄(小二黑體加粗)TOC\o"1-5"\h\z一、 題目: 3\o"CurrentDocument"二、 設(shè)計(jì)目的: 3\o"CurrentDocument"三、 總體設(shè)計(jì)思想概述: 3四、 說(shuō)明: 3\o"CurrentDocument"五、 設(shè)計(jì)要求: 3\o"CurrentDocument"六、 設(shè)計(jì)方案: 3\o"CurrentDocument"七、 流程圖: 4\o"CurrentDocument"八、 運(yùn)行結(jié)果 5\o"CurrentDocument"九、 源程序 6十、總結(jié) 8十-一、參考文獻(xiàn) 9一、 題目:(標(biāo)題2,即三號(hào)黑體加粗)用多進(jìn)程同步方法解決生產(chǎn)者-消費(fèi)者問(wèn)題。二、 設(shè)計(jì)目的:通過(guò)研究Linux的進(jìn)程機(jī)制和信號(hào)量實(shí)現(xiàn)生產(chǎn)者消費(fèi)者問(wèn)題的并發(fā)控制。三、 總體設(shè)計(jì)思想概述:1、生產(chǎn)者一消費(fèi)者問(wèn)題是一種同步問(wèn)題的抽象描述。1、生產(chǎn)者一消費(fèi)者問(wèn)題是一種同步問(wèn)題的抽象描述。2、3、而當(dāng)某個(gè)進(jìn)程釋放資源時(shí),則它就相當(dāng)一個(gè)生產(chǎn)者。2、3、而當(dāng)某個(gè)進(jìn)程釋放資源時(shí),則它就相當(dāng)一個(gè)生產(chǎn)者。計(jì)算機(jī)系統(tǒng)中的每個(gè)進(jìn)程都可以消費(fèi)或生產(chǎn)某類(lèi)資源。當(dāng)系統(tǒng)中某一進(jìn)程使用某一資源時(shí),可以看作是消耗,且該進(jìn)程稱(chēng)為消費(fèi)者。、說(shuō)明:有界緩沖區(qū)內(nèi)設(shè)有20個(gè)存儲(chǔ)單元,放入/取出的數(shù)據(jù)項(xiàng)設(shè)定為1-20這20個(gè)整型數(shù)。五、 設(shè)計(jì)要求:1、 每個(gè)生產(chǎn)者和消費(fèi)者對(duì)有界緩沖區(qū)進(jìn)行操作后,即時(shí)顯示有界緩沖區(qū)的全部?jī)?nèi)容,當(dāng)前指針位置和生產(chǎn)者/消費(fèi)者進(jìn)程的標(biāo)識(shí)符。2、 生產(chǎn)者和消費(fèi)者各有兩個(gè)以上。3、 多個(gè)生產(chǎn)者或多個(gè)消費(fèi)者之間須有共享對(duì)緩沖區(qū)進(jìn)行操作的函數(shù)代碼。六、 設(shè)計(jì)方案:1、 用Java編寫(xiě)程序,運(yùn)行環(huán)境為Eclipse。2、 抽象化生產(chǎn)者與消費(fèi)者之間的關(guān)系,即用線程來(lái)產(chǎn)生數(shù)據(jù)或者使用數(shù)據(jù),定義的類(lèi)有:、publicclassBufferLock、classProducer(3)、classConsumer3、 然后繼承Thread(線程)來(lái)實(shí)現(xiàn)多個(gè)生產(chǎn)者與多個(gè)消費(fèi)者之間的關(guān)系:、classProducerextendsThread、classConsumerextendsThread4、 還需要有一個(gè)緩沖區(qū)來(lái)存放數(shù)據(jù),即通過(guò)緩沖區(qū)把生產(chǎn)者和消費(fèi)者聯(lián)系起來(lái)。5、 synchronized關(guān)鍵字修飾方法,實(shí)現(xiàn)線程同步。七、流程圖:
八、運(yùn)行結(jié)果1、截圖一:[rhread-0Producerput:1Thread-2Producerput:1Thread-1Consumerget:1Thread-3Consumerget:1Thread-2Producerput:2Thread-3Consumerget:2Thread-?Producerput:2Thread-1Consumerget:2Thread-?Producerput:3Thread-?Producerput:4Thread-3Consumerget:3Thread-2Producerput:3Thread-?Producerput:5Thread-3Consumerget:4Thread-3Consumerget:5Thread-3Consumerget:6Thread-1Consumerget:3Thread-2Producerput:4Thread-?Producerput:6Thread-3Consumerget:5Thread-2Producerput:5Thread-1Consumerget:4Thread-2Producerput:6Thread-3Consumerget:7Thread-?Producerput:7Thread-3Consumerget:7Thread-2Producerput:7Thread-1Consumerget:6Thread-2Producerput:SThread-3Consumerget:&Thread-?Producerput:BThread-3Consumerget:9Thread-2Producerput:9Thread-1Consumerget:8Thread-2Producerput:102、截圖二:
Thread-3Consumerget:9Thread-?Producerput:9Thread-3Consumerget:11Thread-2Producerput:11Thread-1Consumerget:10Thread-2Producerput:12Thread-3Consumerget:10Thread-?Producerput:10Thread-3Consumerget:13Thread-2Producerput:13Thread-1Consumerget:12Thread-2Producerput:14Thread-2Producerput:15Thread-3Consumerget:11Thread-3Consumerget:15Thread-2Producerput:16Thread-3Consumerget:16Thread-2Producerput:17Thread-2Producerput:18Thread-?Producerput:11Thread-3Consumerget:17Thread-1Consumerget:14Thread-3Consumerget:18Thread-?Producerput:12Thread-1Consumerget:12Thread-1Consumerget:13Thread-2Producerput:19Thread-2Producerput:20Thread-?Producerput:13Thread-1Consumerget:19Thread-1Consumerget:20Thread-?Producerput:14Thread-1Consumerget:14Thread-?Producerput:15Thread-1Consumerget:153、截圖三:Thread-?Producerput:16Thread-1Consumerget:16Thread-?Producerput:17Thread-1Consumerget:17Thread-?Producerput:ISThread-1Consumerget:IBThread-?Producerput:19Thread-1Consumerget:19Thread-?Producerput:2?Thread-1Consumerget:20〃加互斥鎖的緩沖區(qū)九、源程序〃加互斥鎖的緩沖區(qū)publicclassBufferLock(
〃共享變量//value是否為空的信號(hào)量privateintvalue;〃共享變量//value是否為空的信號(hào)量privatebooleanisEmpty=true;publicsynchronizedvoidput(inti) //同步方法(while(!isEmpty) 〃當(dāng)value不空時(shí),等待try(this.wait(); 〃使調(diào)用該方法的當(dāng)前線程等待,即阻塞自己}catch(InterruptedExceptione)(}value=i; 〃當(dāng)value空時(shí),value獲得值isEmpty=false; //設(shè)置value為不空狀態(tài)notifyAll(); 〃喚醒其他所有等待線程}publicsynchronizedintget() //同步方法(while(isEmpty) 〃當(dāng)value空時(shí),等待try(this.wait();}catch(InterruptedExceptione)(}//設(shè)置value為空狀態(tài),并返回值〃喚醒其他所有等待線程////設(shè)置value為空狀態(tài),并返回值〃喚醒其他所有等待線程//生產(chǎn)者returnvalue;}classProducerextendsThread(privateBufferLockbuffer;publicProducer(BufferLockbuffer)(this.buffer=buffer;}publicvoidrun()(
for(inti=1;i<=20;i++) //生產(chǎn)者往緩沖區(qū)中寫(xiě)入數(shù)1~20(buffer.put(i);Systemout.println(Thread.currentThread().getName()+Producerput:"+i);}}}〃消費(fèi)者classConsumerextendsThread(〃消費(fèi)者privateBufferLockbuffer;publicConsumer(BufferLockbuffer)(this.buffer=buffer;}publicvoidrun()(for(inti=1;i<=20;i++) 〃消費(fèi)者從緩沖區(qū)中取數(shù)System.out.println("\t\t\t"+Thread.currentThread().getName()+"Consumerget:"+buffer.get());}publicstaticvoidmain(Stringargs[])(BufferLockbuffer=newBufferLock();newProducer(buffer)).start(); 〃構(gòu)造兩個(gè)生產(chǎn)者線程和兩個(gè)消費(fèi)者線程newConsumer(buffer)).start();newProducer(buffer)).start();newConsumer(buffer)).start();}}十、總結(jié)十、總結(jié)這次生產(chǎn)者與消費(fèi)者之間的關(guān)系的實(shí)驗(yàn)我用Java語(yǔ)言編寫(xiě)的,用關(guān)鍵字synchronized來(lái)實(shí)現(xiàn)多個(gè)線程同步,用繼承Thread來(lái)將生產(chǎn)者線程與消費(fèi)者線程實(shí)例化。其實(shí),在做這個(gè)實(shí)驗(yàn)之前我的Java語(yǔ)言編程老師講
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國(guó)三維木質(zhì)墻板行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025合同模板房地產(chǎn)收購(gòu)合同昆山某國(guó)際廣場(chǎng)整體購(gòu)買(mǎi)協(xié)議
- 借款合同擔(dān)保書(shū)范本
- 合同范本餐飲廚師勞動(dòng)合同
- 單位間借款合同年
- 標(biāo)準(zhǔn)招標(biāo)代理合同
- 2025新版公司承包經(jīng)營(yíng)合同書(shū)
- 電梯裝修合同范文
- 預(yù)付合同范本
- 客車(chē)租賃合同范文
- 2025年個(gè)人合法二手車(chē)買(mǎi)賣(mài)合同(4篇)
- 地理標(biāo)志專(zhuān)題通用課件
- 《小英雄雨來(lái)》讀書(shū)分享會(huì)
- 中央導(dǎo)管相關(guān)血流感染防控
- 農(nóng)業(yè)行政執(zhí)法現(xiàn)狀及相關(guān)法律法規(guī)課件
- 產(chǎn)時(shí)子癇應(yīng)急演練文檔
- 小學(xué)美術(shù)-《神奇的肥皂粉》教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 測(cè)量管理體系內(nèi)審檢查表
- 班組月度考核評(píng)分表
- 部編版一年級(jí)下冊(cè)《道德與法治》教學(xué)工作計(jì)劃及全冊(cè)教案
- 三重一大事項(xiàng)決策流程
評(píng)論
0/150
提交評(píng)論