操作系統(tǒng)實(shí)驗(yàn)1_第1頁(yè)
操作系統(tǒng)實(shí)驗(yàn)1_第2頁(yè)
操作系統(tǒng)實(shí)驗(yàn)1_第3頁(yè)
操作系統(tǒng)實(shí)驗(yàn)1_第4頁(yè)
操作系統(tǒng)實(shí)驗(yàn)1_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、南京工程學(xué)院上機(jī)實(shí) 驗(yàn) 報(bào) 告 課 程 名 稱: 操作系統(tǒng) 實(shí)驗(yàn)項(xiàng)目名稱: 基于線程的編程技術(shù) 學(xué)生班級(jí): 數(shù)字媒體143 學(xué)生學(xué)號(hào): 202140703 學(xué)生姓名: 汲靜 指導(dǎo)教師: 彭煥峰 實(shí) 驗(yàn) 時(shí) 間: 2016.10.11 實(shí) 驗(yàn) 地 點(diǎn): 信息樓專(zhuān)業(yè)機(jī)房 實(shí)驗(yàn)成績(jī)?cè)u(píng)定: 2016-2017-1學(xué)期一、實(shí)驗(yàn)?zāi)康募耙笫煜せ诙嗑€程的編程技術(shù),編程實(shí)現(xiàn)簡(jiǎn)單的多線程編程實(shí)例。要求采用java等某一種編程語(yǔ)言實(shí)現(xiàn)2個(gè)多線程編程實(shí)例。二、實(shí)驗(yàn)相關(guān)知識(shí)簡(jiǎn)介線程是近年來(lái)操作系統(tǒng)領(lǐng)域出現(xiàn)的一個(gè)非常重要的機(jī)制和技術(shù),其重要程度不亞于進(jìn)程。線程機(jī)制可以提高程序執(zhí)行的效率,而且也方便用戶編程,不但適用于

2、多機(jī)系統(tǒng),對(duì)大多數(shù)單cpu的個(gè)人計(jì)算機(jī)也同樣帶來(lái)好處,因此當(dāng)代操作系統(tǒng)都支持線程。在操作系統(tǒng)中,進(jìn)程的引入提高了計(jì)算機(jī)資源的利用效率。但在進(jìn)一步提高進(jìn)程的并發(fā)性時(shí),人們發(fā)現(xiàn)進(jìn)程切換開(kāi)銷(xiāo)占的比重越來(lái)越大。傳統(tǒng)的進(jìn)程不能很好的利用多處理器,因?yàn)橐粋€(gè)進(jìn)程在某個(gè)時(shí)刻只能使用一個(gè)處理器,進(jìn)程間通信的效率受到限制。引入線程的目的:減?。ㄟM(jìn)程/線程)上下文切換開(kāi)銷(xiāo);更好支持多處理器,達(dá)到最大程度的并行;簡(jiǎn)化進(jìn)程間的通信。 三、關(guān)鍵程序代碼分析(一) 程序11. 問(wèn)題描述答:?jiǎn)?dòng)3個(gè)線程打印遞增的數(shù)字, 線程1先打印1,2,3,4,5, 然后是線程2打印6,7,8,9,10, 然后是線程3打印11,12,13

3、,14,15. 接著再由線程1打印16,17,18,19,20.以此類(lèi)推, 直到打印到302. 關(guān)鍵代碼分析答:package lalala;public class numberprintdemo / n為即將打印的數(shù)字 private static int n = 1; / state=1表示將由線程1打印數(shù)字, state=2表示將由線程2打印數(shù)字, state=3表示將由線程3打印數(shù)字 private static int state = 1; public static void main(string args) final numberprintdemo pn = new num

4、berprintdemo(); new thread(new runnable() public void run() / 3個(gè)線程打印75個(gè)數(shù)字, 單個(gè)線程每次打印5個(gè)連續(xù)數(shù)字, 因此每個(gè)線程只需執(zhí)行5次打印任務(wù). 3*5*5=75 for (int i = 0; i 2; i+) / 3個(gè)線程都使用pn對(duì)象做鎖, 以保證每個(gè)交替期間只有一個(gè)線程在打印 synchronized (pn) / 如果state!=1, 說(shuō)明此時(shí)尚未輪到線程1打印, 線程1將調(diào)用pn的wait()方法, 直到下次被喚醒 while (state != 1) try pn.wait(); catch (interr

5、uptedexception e) e.printstacktrace(); / 當(dāng)state=1時(shí), 輪到線程1打印5次數(shù)字 for (int j = 0; j 5; j+) / 打印一次后n自增 system.out.println(thread.currentthread().getname() + : + n+); system.out.println(); / 線程1打印完成后, 將state賦值為2, 表示接下來(lái)將輪到線程2打印 state = 2; / notifyall()方法喚醒在pn上wait的線程2和線程3, 同時(shí)線程1將退出同步代碼塊, 釋放pn鎖. / 因此3個(gè)線程將

6、再次競(jìng)爭(zhēng)pn鎖 / 假如線程1或線程3競(jìng)爭(zhēng)到資源, 由于state不為1或3, 線程1或線程3將很快再次wait, 釋放出剛到手的pn鎖. / 只有線程2可以通過(guò)state判定, 所以線程2一定是執(zhí)行下次打印任務(wù)的線程. / 對(duì)于線程2來(lái)說(shuō), 獲得鎖的道路也許是曲折的, 但前途一定是光明的. pn.notifyall(); , 線程1).start(); new thread(new runnable() public void run() for (int i = 0; i 5; i+) synchronized (pn) while (state != 2) try pn.wait();

7、catch (interruptedexception e) e.printstacktrace(); for (int j = 0; j 5; j+) system.out.println(thread.currentthread().getname()+ : + n+); system.out.println(); state = 3; pn.notifyall(); , 線程2).start(); new thread(new runnable() public void run() for (int i = 0; i 5; i+) synchronized (pn) while (st

8、ate != 3) try pn.wait(); catch (interruptedexception e) e.printstacktrace(); for (int j = 0; j =100) system.out.println(name+,已經(jīng)到達(dá)終點(diǎn)!); /結(jié)束賽跑,break break; public static void main(string args) guitusaipao wugui=new guitusaipao(烏龜); guitusaipao tuzi=new guitusaipao(兔子); thread thread=new thread(wugui); thread thread2=new thread(tuzi); /啟動(dòng)線程 thread.start(); thread2.start(); 4、 運(yùn)行結(jié)果說(shuō)明:2個(gè)程序的運(yùn)行截圖,并對(duì)執(zhí)行結(jié)果進(jìn)行解釋。進(jìn)程1: 進(jìn)程2:五、體會(huì)與提高 重點(diǎn)說(shuō)明對(duì)多線程編程的理解。 多線程編程技術(shù)是java語(yǔ)言的重

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論