欢迎来到天天文库
浏览记录
ID:57651401
大小:144.50 KB
页数:9页
时间:2020-08-30
《多线程异常处理.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验四多线程异常处理1.实验目的(1)掌握Java的异常处理机制及相关实现方法能够在程序设计中熟练运用异常及相关类及对象;(2)掌握Java多线程的概念和实现方法;(3)掌握Java多线程的同步问题;2.实验内容实验题1创建两个线程,一个线程打印“A”,另一个线程打印“B”,比如ABBABAABBA….实验代码:packagexuguigui;publicclassSimpleThreadextendsThread{publicSimpleThread(Stringname){setName(name);}publicvoidrun(){inti=0;while(i+
2、+<5){try{System.out.print(getName()+"");//Thread.sleep(1000);}catch(Exceptione){e.printStackTrace();}}}}packagexuguigui;publicclassXu{publicstaticvoidmain(String[]args){SimpleThreadthread1=newSimpleThread("A");SimpleThreadthread2=newSimpleThread("B");thread1.start();thread2.start();}}程序
3、运行结果:9实验题2假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒买一张票。打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。输出格式如下:第4售票点卖出第100张票第2售票点卖出第101张票……程序代码:packagexx;publicclasstestxxextendsThread{intticket=200;Stringname="";publicvoidrun(){while(true){synchronized(name){if(ticket<=0)break;System.out.println("第"
4、+Thread.currentThread().getName()+"售票点卖出第"+ticket--+"张票");try{Thread.sleep(100);}catch(InterruptedExceptione){e.printStackTrace();}}}}}packagexx;publicclassTicket{publicstaticvoidmain(String[]args){testxxt=newtestxx();newThread(t,"1").start();newThread(t,"2").start();newThread(t,"3").st
5、art();newThread(t,"4").start();newThread(t,"5").start();9newThread(t,"6").start();newThread(t,"7").start();newThread(t,"8").start();newThread(t,"9").start();newThread(t,"10").start();}}程序运行结果:此题主要考察synchronized()同步代码块的理解和使用。在程序中执行到synchronized设定的同步化区块时锁定当前对象,这样就没有其他线程可以执行这个被同步化的区块了。另,代码
6、中调用了Thread类中的currentThread()方法,返回对当前正在执行的线程对象的引用。实验题3假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。现有两个顾客,每人都分3次,每次100元将钱到入。试编写一个程序,模拟实际作业。程序如下:classCBank{privatestaticintsum=0;publicstaticvoidadd(intn){inttmp=sum;tmp=tmp+n;//累加汇款总额try{Thread.sleep((int)(10000*Math.random()));//小睡几秒钟}catch(Interru
7、ptedExceptione){}9sum=tmp;System.out.println("sum="+sum);}}classCCustomerextendsThread//CCustomer类,继承自Thread类{publicvoidrun(){//run()methodfor(inti=1;i<=3;i++)CBank.add(100);//将100元分三次汇入}}publicclassEx6_1{publicstaticvoidmain(Stringargs[]){CCustomerc1=newCCustomer();CCustomerc2
此文档下载收益归作者所有