




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6頁共8頁天津理工大學實驗報告學院(系)名稱:計算機與通信工程學院姓名********學號*********專業(yè)班級2007級3班實驗項目實驗三:Java多線程課程名稱Java語言程序設計課程代碼0660266實驗時間2009年12月實驗地點計算機軟件實驗室XNA505批改意見成績教師簽字:實驗內容:1.見“題目1.pdf”2.見“題目2.pdf”實驗目的:1.理解并掌握進程、線程、調度、線程狀態(tài)、優(yōu)先級、互斥、同步等基本概念2.理解并掌握Java中創(chuàng)建線程的兩種方法3.理解并掌握Java線程控制方法實驗要求:1.按照要求編制程序;3.為增加程序可讀性,請在程序中對類成員進行適當注釋說明;4.整理上機步驟,總結經驗和體會;5.認真完成并按時提交實驗報告。【實驗過程記錄(源程序、測試用例、測試結果及心得體會等)】(1)代碼源:classShopimplementsRunnable{ ThreadzhangWorker,wangWorker,boss;Shop(){ zhangWorker=newThread(this); wangWorker=newThread(this); boss=newThread(this); zhangWorker.setName("張工"); wangWorker.setName("王工"); boss.setName("老板");}publicvoidrun(){ inti=0; if(Thread.currentThread()==zhangWorker){ while(true){ try{ i++; System.out.printf("\n%s已搬運了%d箱蘋果\n",zhangWorker.getName(),i); if(i==3) return; System.out.printf(zhangWorker.getName()+"休息十秒"); Thread.sleep(10000); } catch(InterruptedExceptione) {System.out.printf("\n%s讓%s繼續(xù)工作",boss.getName(),zhangWorker.getName()); } } } elseif(Thread.currentThread()==wangWorker) { while(true) {try{ i++; System.out.printf("\n%s已搬運了%d箱香蕉\n",wangWorker.getName(),i); if(i==3) return; System.out.printf(wangWorker.getName()+"休息十秒"); Thread.sleep(10000); } catch(InterruptedExceptione){ System.out.printf("\n%s讓%s繼續(xù)工作",boss.getName(),wangWorker.getName()); } } } elseif(Thread.currentThread()==boss) {while(true){zhangWerrupt(); wangWerrupt(); if(!(wangWorker.isAlive()||zhangWorker.isAlive())){ System.out.printf("%n%s下班",boss.getName()); return; }}}}}classzyp{ publicstaticvoidmain(String[]args){Shopshop=newShop();shop.zhangWorker.start();shop.wangWorker.start();shop.boss.start(); }}測試用例與測試結果:(2)源代碼:publicclasszyp1{publicstaticvoidmain(Stringargs[]){Strings1="趙",s2="錢",s3="孫",s4="李",s5="周";Cinemacanema=newCinema(s1,s2,s3,s4,s5);Threadqian,sun,zhou,zhao,li;qian=newThread(canema);sun=newThread(canema);zhou=newThread(canema);zhao=newThread(canema);li=newThread(canema);zhao.setName(s1);qian.setName(s2);sun.setName(s3);li.setName(s4);zhou.setName(s5);zhao.start();qian.start();sun.start();li.start();zhou.start();}}classCinemaimplementsRunnable{//實現Runnable接口的類(電影院)TicketSellerseller;//電影院的售票員Stringname1,name2,name3,name4,name5;//買票人的名字(線程的名字)Cinema(Strings1,Strings2,Strings3,Strings4,Strings5){seller=newTicketSeller();name1=s1;name2=s2;name3=s3;name4=s4;name5=s5;}publicvoidrun(){if(Thread.currentThread().getName().equals(name2)){seller.sellTicket(20);}elseif(Thread.currentThread().getName().equals(name3)){seller.sellTicket(10);}elseif(Thread.currentThread().getName().equals(name5)){seller.sellTicket(5);}elseif(Thread.currentThread().getName().equals(name1)){seller.sellTicket(21);}elseif(Thread.currentThread().getName().equals(name4)){seller.sellTicket(11);}}}classTicketSeller{//負責賣票的類intfiveNumber=1,tenNumber=0,twentyNumber=0;publicsynchronizedvoidsellTicket(intreceiveMoney){Strings=Thread.currentThread().getName();if(receiveMoney==5){fiveNumber=fiveNumber+1;System.out.println(s+"給售票員5元錢,售票員賣給"+s+"一張票,不必找贖");}elseif(receiveMoney==10){while(fiveNumber<1){try{System.out.println(s+"給售票員10元錢");System.out.println("售票員請"+s+"靠邊等一會");wait();//如果線程占有CPU期間執(zhí)行了wait(),就進入中斷狀態(tài)System.out.println(s+"結束等待,繼續(xù)買票");}catch(InterruptedExceptione){}}fiveNumber=fiveNumber-1;tenNumber=tenNumber+1;System.out.println(s+"給售票員10元錢,售票員賣給"+s+"一張票,找贖5元");}elseif(receiveMoney==11){while(fiveNumber<1){try{System.out.println(s+"給售票員10元錢");System.out.println("售票員請"+s+"靠邊等一會");wait();//如果線程占有CPU期間執(zhí)行了wait(),就進入中斷狀態(tài)System.out.println(s+"結束等待,繼續(xù)買票");}catch(InterruptedExceptione){}}tenNumber=tenNumber+1;System.out.println(s+"給售票員10元錢,售票員賣給"+s+"2張票,找贖0元");}elseif(receiveMoney==20){while(fiveNumber<1||tenNumber<1){try{System.out.println(s+"給售票員20元錢");System.out.println("售票員請"+s+"靠邊等一會");wait();//如果線程占有CPU期間執(zhí)行了wait(),就進入中斷狀態(tài)System.out.println(s+"結束等待,繼續(xù)買票");}catch(InterruptedExceptione){}}fiveNumber=fiveNumber-1;tenNumber=tenNumber-1;twentyNumber=twentyNumber+1;System.out.println(s+"給售票員20元錢,售票員賣給"+s+"一張票,找贖15元");}elseif(receiveMoney==21){while(fiveNumber<1||tenNumber<1){try{System.out.println(s+"給售票員20元錢");System.out.println("售票員請"+s+"靠邊等一會");wait();//如果線程占有CPU期間執(zhí)行了wait(),就進入中斷狀態(tài)System.out.println(s+"結束等
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 發(fā)廊招收學徒合同范本
- 代加工合作合同范本
- 印刷制作度合同范本
- 合伙合同范本盈利分配
- 上海市戶外廣告合同范本
- 攝影作品使用授權合同范本
- epc o模式合同范本
- 口罩采購居間合同范本
- 刷單合同范本
- 店鋪的轉讓合同范本
- 供配電10kv變配電所畢業(yè)設計
- 風電場110kV升壓站日常巡檢路線示意圖
- 樁基計算表格大全(自動版)
- 《帶狀皰疹治療學》牛德興教授專業(yè)研究治療病毒性皰疹50年心血
- 《材料工程基礎》教學大綱
- 國內外材料牌號對照
- 建設工程施工合同培訓PPT(49頁)
- LY∕T 2780-2016 松皰銹病菌檢疫技術規(guī)程
- 航空服務形體訓練課程標準
- 項目部安全管理組織機構網絡圖GDAQ20102
- 蘇科版四年級勞動技術下冊教學計劃
評論
0/150
提交評論