1 / 13
文档名称:

java多线程实验报告.docx

格式:docx   大小:19KB   页数:13页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

java多线程实验报告.docx

上传人:qi1920809 2018/12/17 文件大小:19 KB

下载得到文件列表

java多线程实验报告.docx

文档介绍

文档介绍:java多线程实验报告篇一:西北农林科技大学java多线程实验报告实验7多线程 (1)掌握Java多线程的概念和实现方法(2)掌握Java多线程的同步问题 :火车售票假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒买一张票。打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。程序运行结果见左图。打开Eclipse lassTicketextendsThread{ intticket=1000;Stringname="";publicvoidrun(){while(true){synchronized(name){if(ticket ("第"+().getName()+"售票点卖出了第"+ticket--+"张票"); } }} }}try{}catch(InterruptedExceptione){}(100); lassTest{ }publicstaticvoidmain(Stringargs[]){}Tickett=newTicket();newThread(t,"1").start();newThread(t,"2").start();newThread(t,"3").start();newThread(t,"4").start();newThread(t,"5").start();newThread(t,"6").start();newThread(t,"7").start();newThread(t,"8").start();newThread(t,"9").start();newThread(t,"10").start(); 任务二:银行存款假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。现有两个顾客,每人都分3次,每次100元将钱到入。试编写一个程序,模拟实际作业。程序如下: classCBank {privatestaticintsum=0; publicstaticvoidadd(intn){ inttmp=sum; tmp=tmp+n;//累加汇款总额 try{ ((int)(10000*()));//小睡几秒钟} catch(InterruptedExceptione){} sum=tmp; ("sum="+sum); } } ustomerextendsThread//CCustomer类,继承自Thread类{publicvoidrun(){//run()method for(inti=1;i (100);//将100元分三次汇入} } lassEx7_1 {publicstaticvoidmain(Stringargs[]) {CCustomerc1=ustomer(); CCustomerc2=ustomer(); ();(); } } [基本要求]运行程序5次,观察每次运行结果是否相同。[思考问题]运行结果每次是否相同,运行时间是否相同,为什么? ①要使程序运行结果每次相同,应该怎样修改程序? ②程序中为什么要使用异常处理? 答:运行程序5次,观察每次运行结果不相同: 运行结果每次是否相同,运行时间不相同,因为程序不同步。①为了使程序运行结果每次相同,程序修改如下: classCBank {privatestaticintsum=0; publicsynchronizedstaticvoidadd(intn){ inttmp=sum; tmp=tmp+n;//累加汇款总额 try{ ((int)(10000*()));//小睡几秒钟} catch(InterruptedExceptione){} sum=tmp; ("sum="+sum); } } ustomerextendsThread//CCustomer类,继承自Thread类{publicvoidrun(){//run()method for(inti=1;i (100);//将100元分三次汇入} } lassEx7_1 {publicstaticvoidmain(Stringargs[]) {CCustomerc1=ustomer(); CCustomerc2=ustomer(); c1