




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
..實驗報告二實驗名稱:一、生產(chǎn)者-消費(fèi)者問題的多線程解決方案二、設(shè)計一個執(zhí)行矩陣乘法的多線程程序日期:2015-10-22班級:13級計科學(xué)號::實驗?zāi)康?.掌握線程的同步與互斥2.掌握生產(chǎn)者消費(fèi)者的實現(xiàn)問題3.掌握多線程的編程方法4.掌握矩陣乘法的根本計算原理以及實現(xiàn)實驗容1.生產(chǎn)者-消費(fèi)者問題的多線程解決方案2.設(shè)計一個執(zhí)行矩陣乘法的多線程程序工程要求與分析1.請查閱資料,掌握線程創(chuàng)立的相關(guān)知識以及矩陣乘法的相關(guān)知識,了解java語言程序編寫的相關(guān)知識2.理解線程的實驗步驟在本次試驗中,以"生產(chǎn)者-消費(fèi)者〞模型為依據(jù),提供了一個多線程的"生產(chǎn)者-消費(fèi)者〞實例,編寫java代碼調(diào)試運(yùn)行結(jié)果,得出相應(yīng)的結(jié)論。理解矩陣乘法的實驗步驟具體實現(xiàn)生產(chǎn)者-消費(fèi)者實例創(chuàng)立一個緩沖信息發(fā)送接收通道接口,并創(chuàng)立盒子類實現(xiàn),主要代碼如下://通道接口publicinterfaceChannel{publicabstractvoidsend(Objectitem);publicabstractObjectreceive();}//實現(xiàn)接口publicclassMessageQueueimplementsChannel{privateVectorqueue;publicMessageQueue(){queue=newVector();}publicvoidsend(Objectitem){queue.addElement(item);}publicObjectreceive(){if(queue.size()==0)returnnull;elsereturnqueue.remove(0);}}創(chuàng)立一個工廠多線程類〔啟動生產(chǎn)者和消費(fèi)者〕,并且添加main函數(shù)進(jìn)展測試,主要代碼如下://工廠類與主方法publicclassFactory{publicFactory(){ ChannelmailBox=newMessageQueue(); ThreadproducerThread=newThread(newProducer(mailBox)); ThreadconsumerThread=newThread(newConsumer(mailBox));producerThread.start();consumerThread.start();}publicstaticvoidmain(String[]args) {Factoryserver=newFactory(); }創(chuàng)立一個線程睡眠類,用于測試,主要代碼如下:publicclassSleepUtilities{publicstaticvoidnap() {nap(NAP_TIME); }publicstaticvoidnap(intduration) {intsleeptime=(int)(NAP_TIME*Math.random());try {Thread.sleep(sleeptime*1000);}catch(InterruptedExceptione){} }privatestaticfinalintNAP_TIME=5;創(chuàng)立生產(chǎn)者類實現(xiàn)Runnable,主要代碼如下:publicclassProducerimplementsRunnable{privateChannelmbox;publicProducer(Channelmbox){this.mbox=mbox;}publicvoidrun(){Datemessage;while(true) { SleepUtilities.nap();message=newDate(); System.out.println("Producerproduced"+message);mbox.send(message); }}}創(chuàng)立消費(fèi)者類實現(xiàn)Runnable,主要代碼如下:publicclassConsumerimplementsRunnable{privateChannelmbox;publicConsumer(Channelmbox){this.mbox=mbox;}publicvoidrun(){ Datemessage;while(true) { SleepUtilities.nap();message=(Date)mbox.receive();if(message!=null) System.out.println("Consumerconsumed"+message); }}}調(diào)試程序,運(yùn)行結(jié)果:矩陣乘法實例初始化矩陣(便于觀察,這里使用隨機(jī)數(shù)生成矩陣),主要初始化代碼如下matrix1=newint[m][k];matrix2=newint[k][n];matrix3=newint[m][n];//隨機(jī)初始化矩陣a,bfillRandom(matrix1);fillRandom(matrix2);staticvoidfillRandom(int[][]x) {for(inti=0;i<x.length;i++) {for(intj=0;j<x[i].length;j++) {//每個元素設(shè)置為0到99的隨機(jī)自然數(shù)x[i][j]=(int)(Math.random()*100); }}}打印輸出矩陣函數(shù),主要代碼如下:staticvoidprintMatrix(int[][]x){for(inti=0;i<x.length;i++){for(intj=0;j<x[i].length;j++){System.out.print(x[i][j]+"");}System.out.println("");}System.out.println("");}創(chuàng)立多線程類,并實現(xiàn)Runnable接口同步對矩陣進(jìn)展分行計算,主要代碼如下://創(chuàng)立線程,數(shù)量<=4for(inti=0;i<4;i++){if(index<m){Threadt=newThread(newMyThread());t.start();}else{break;}synchronizedstaticintgetTask(){if(index<m){returnindex++;}return-1;}}classMyThreadimplementsRunnable{inttask;//Overridepublicvoidrun(){MultiThreadMatrix.threadCount++;while((task=MultiThreadMatrix.getTask())!=-1){System.out.println("進(jìn)程:"+Thread.currentThread().getName()+"\t開場計算第"+(task+1)+"行");for(inti=0;i<MultiThreadMatrix.n;i++){for(intj=0;j<MultiThreadMatrix.k;j++){MultiThreadMatrix.matrix3[task][i]+=MultiThreadMatrix.matrix1[task][j]*MultiThreadMatrix.matrix2[j][i];}}}MultiThreadMatrix.threadCount--;}通過不斷改變矩陣大小,線程數(shù)目,,調(diào)試程序,運(yùn)行結(jié)果:所遇問題與解決方法在生產(chǎn)者-消費(fèi)者多線程試驗中,剛開場沒有考慮到使用線程睡眠,運(yùn)行結(jié)果速度之快
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年心理咨詢與治療技術(shù)考試試卷及答案
- 2025年文化項目策劃與執(zhí)行考試試卷及答案
- 2025年物業(yè)管理師資格考試卷及答案
- 2025年全國研究生入學(xué)考試試卷及答案
- 2025年廣告學(xué)入門考試試題及答案
- 2025年健康科技與生物醫(yī)學(xué)工程職業(yè)考試試卷及答案
- 2025年暖通空調(diào)工程師職業(yè)資格考試題及答案
- 2025年勞動人事爭議處理課程考試題目及答案
- 2025年經(jīng)營管理與決策課程考試題目及答案
- 法律碩士(專業(yè)基礎(chǔ)課)模擬試卷124
- 2025-2030年中國煤電行業(yè)市場深度發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025年醫(yī)院感染控制試題及答案
- 公路工程標(biāo)準(zhǔn)施工招標(biāo)文件(2018年版)
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蝕工程施工及驗收規(guī)范
- 磁芯參數(shù)對照表
- 人造草坪設(shè)計說明
- 甘肅省城鎮(zhèn)規(guī)劃管理技術(shù)規(guī)程(試行)
- 波紋管壓漿料計算公式表
- 《質(zhì)量管理體系文件》成品檢驗報告(COA)
- 會議記錄表格(模板)
- 國家高新技術(shù)企業(yè)的稅收優(yōu)惠政策還有待完善
評論
0/150
提交評論