




版權(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): 信息樓專業(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)程切換開銷占的比重越來(lái)越大。傳統(tǒng)的進(jìn)程不能很好的利用多處理器,因?yàn)橐粋€(gè)進(jìn)程在某個(gè)時(shí)刻只能使用一個(gè)處理器,進(jìn)程間通信的效率受到限制。引入線程的目的:減?。ㄟM(jìn)程/線程)上下文切換開銷;更好支持多處理器,達(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,
3、13,14,15. 接著再由線程1打印16,17,18,19,20.以此類推, 直到打印到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 N
4、umberPrintDemo(); 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 (Inte
5、rruptedException 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 (
8、state != 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動(dòng)合同范本1995
- 辦公家具訂購(gòu)合同范本
- pc構(gòu)件模具合同范本
- 中學(xué)軍訓(xùn)合同范本
- 共同抵押合同范本
- 中介和工廠合同范本
- 華泰期貨合同范本
- 公司簽訂賠償合同范例
- 修假山承攬合同范本
- 中國(guó)石化合同范本
- 新教科版六年級(jí)下冊(cè)科學(xué)全冊(cè)教案
- 雞肉食品行業(yè)報(bào)告
- 華為十六字方針解析以崗定級(jí)-以級(jí)定薪-人崗匹配、易崗易薪
- 顆粒增強(qiáng)鋁基復(fù)合材料
- 火車站消防指導(dǎo)培訓(xùn)課件
- 婦產(chǎn)科全套課件
- 穴位貼敷的運(yùn)用課件
- 中心靜脈壓與有創(chuàng)動(dòng)脈血壓監(jiān)測(cè)護(hù)理
- 【銅版畫“飛塵”技法實(shí)踐研究4900字(論文)】
- 人教版道德與法治五年級(jí)下冊(cè)全冊(cè)課件(完整版)
- 《GMP實(shí)務(wù)教程》 完整全套教學(xué)課件 項(xiàng)目1-14 GMP基礎(chǔ)知識(shí)-藥品生產(chǎn)行政檢查
評(píng)論
0/150
提交評(píng)論