Java大学实用教程(第二版)实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java大学实用教程(第二版)实验8.2.1线程的状态4.程序模板按模板要求,将【代码1】~【代码1】替换为Java程序代码。ThreadExample.javaclassTortoiseextendsThread{intsleepTime=0,liveLength=0;Tortoise(intsleepTime,Stringname,intliveLength){this.sleepTime=sleepTime;this.liveLength=liveLength;setName(“name”);//【代码1】//设置线程的名字为name}publicvoidrun(){while(true){liveLength--;System.out.printf(@);try{Thread.sleep(sleepTime);//【代码2】//让线程调用sleep方法进入中断状态,sleepTime毫秒后线程//重新排队,等待CUP资源}catch(InterruptedExceptione){}if(liveLength=0){System.out.printf(getName()+进入死亡状态\n);return;//【代码3】//结束run方法的语句}}}}classRabbitextendsThread{intsleepTime=0,liveLength;Rabbit(intsleepTime,Stringname,intliveLength){this.sleepTime=sleepTime;this.liveLength=liveLength;setName(“name”);//【代码4】//设置线程的名字为name}publicvoidrun(){while(true){liveLength--;System.out.printf(*);try{Thread.sleep(sleepTime);//【代码5】//让线程调用sleep方法进入中断状态,sleepTime毫秒后//线程重新排队,等待CUP资源}catch(InterruptedExceptione){}if(liveLength=0){System.out.printf(getName()+进入死亡状态\n);return;//【代码6】//结束run方法的语句}}}}publicclassThreadExample{publicstaticvoidmain(Stringargs[]){Rabbitrabit;rabit=newRabbit(100,rabit,100);//【代码7】//新建线程rabitTortoisetortoise;tortoise=newTortoise(200,tortoise,200);//【代码8】//新建线程tortoisetortoise.start();//【代码9】//启动线程tortoiserabit.start();//【代码10】//启动线程rabit}}8.2.2使用Rannable接口4.程序模板按模板要求,将【代码1】~【代码10】替换为Java程序代码。BankExample.javaclassBankimplementsRunnable{intmoney=100;//【代码1】//声明一个int型变量money,初值为100Threadzhang,keven;Bank(){zhang=newThread(this);//【代码2】//创建zhang,Bank对象为zhang的目标对象zhang.setName(“会计”);//【代码3】//设置zhang线程的名字为“会计”keven=newThread(this);//【代码4】//创建keven,Bank对象为keven的目标对象keven.setName(“出纳”);//【代码5】//设置keven线程的名字为“出纳”}publicvoidrun(){inti=0;//【代码6】//声明一个int类型变量i,初值为0while(true){if(zhang.isAlive())//判断线程zhang是否正在占有CUP资源{i=i+1;money=money+1;System.out.printf(\n%s将money的值改为%d\t,zhang.getName(),money);System.out.printf(%s的局部变量i=%d\n,zhang.getName(),i);if(i=6){System.out.printf(%s线程进入死亡状态\n,zhang.getName());return;//【代码8】//使得线程zhang进入死亡状态}try{Thread.sleep(1000);}catch(InterruptedExceptione){}}elseif(keven.isAlive())//判断线程keven是否正在占有CUP资源{i=i-1;money=money-1;System.out.printf(\n%s将money的值改为%d\t,keven.getName(),money);System.out.printf(%s的局部变量i=%d\n,keven.getName(),i);if(i=-6){System.out.printf(%s线程进入死亡状态\n,keven.getName());return;//【代码10】//使得线程keven进入死亡状态}try{Thread.sleep(1000);}catch(InterruptedExceptione){}}}}}classBankExample{publicstaticvoidmain(Stringargs[]){Bankbank=newBank();bank.zhang.start();bank.keven.start();}}8.2.3吵醒休眠的线程4.程序模板按模板要求,将【代码1】~【代码7】替换为Java程序代码。ShopExample.javapackagetest;classShop1implementsRunnable{ThreadzhangWorker,wangWorker,boss;Shop1(){boss=newThread(this);//【代码1】//创建boss,Shop对象为boss目标对象zhangWorker=newThread(this);//【代码2】//创建zhangWorker,Shop对象为boss目标对象wangWorker=newThread(this);//【代码3】//创建wangWorker,Shop对象为boss目标对象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;Thread.sleep(10000);//【代码4】//zhangWorker休眠10秒(10000毫秒)}catch(InterruptedExceptione){System.out.printf(\n%s让%s继续工作,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;Thread.sleep(10000);//【代码5】//wangWorker休眠10秒(10000毫秒)}catch(InterruptedExceptione){System.out.printf(\n%s让%s继续工作,boss.getName(),wangWorker.getName());}}}elseif(Thread.currentThread()==boss){while(true){zhangWorker.interrupt();//【代码6】//吵醒zhangWorkerwangWorker.interrupt();//【代码7】//吵醒wangWorkerif(!(wangWorker.isAlive()||zhangWorker.isAlive())){System.out.printf(%n%s下班,boss.getName());return;}}}}}classShopExample{publicstaticvoidmain(Stringargs[]){Shop1shop=newShop1();shop.zhangWorker.start();shop.wangWorker.start();shop.boss.start();}}8.2.4排队买票4.程序模板按模板要求,将【代码1】~【代码7】替换为Java程序代码。SaleExample.javapackagetest1;classTicketSeller//负责卖票的类{intfiveNumber=1,tenNumber=0,twentyNumber=0;publicsynchronizedvoidsellTicket(intreceiveMoney,intbuyNumber){if(receiveMoney==5){fiveNumber=fiveNumber+1;System.out.printf(\n%s给我5元钱,这是您的1张入场卷,Thread.currentThread().getName());}elseif(receiveMoney==10&&buyNumber==2){tenNumber=tenNumber+1;System.out.printf(\n%s给我10元钱,这是您的2张入场卷,Thread.currentThread().getName());}elseif(receiveMoney==10&&buyNumber==1){while(fiveNumber1)//【代码1】//给出线程需等待的条件{try{System.out.printf(\n%30s靠边等,Thread.currentThread().getName());wait();//【代码2】//线程进入等待状态System.out.printf(\n%30s结束等待\n,Thread.currentThread().getName());}catch(InterruptedExceptione){}}fiveNumber=fiveNumber-1;tenNumber=tenNumber+1;System.out.printf(\n%s给我10元钱,找您5元,这是您的1张入场卷,Thread.currentThread().getName());}elseif(receiveMoney==20&&buyNumber==1){while(fiveNumber1||tenNumber1)//【代码3】//给出线程需等待的条件{try{System.out.printf(\n%30s靠边等,Thread.currentThread().getName());wait();//【代码4】//线程进入等待状态System.out.printf(\n%30s结束等待,Thread.currentThread().getName());}catch(InterruptedExceptione){}}fiveNumber=fiveNumber-1;tenNumber=tenNumber-1;twent

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功