欢迎来到天天文库
浏览记录
ID:46689811
大小:79.00 KB
页数:10页
时间:2019-11-26
《实验六多线程基础编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
实验六多线程基础编程实验目的通过继承线程类java.lang.Thread创建具有特定功能的线程类,通过实现接口java.lang.Runnable创建可作为线程运行的类,创建线程类对象,启动线程,并观察运行、停止。创建实现了Runnable接口的线程类对象以后,启动线程,通过观察运行和停止,掌握线程类java.lang.Thread常用方法的使用。掌握使用关键字synchronized同步方法、使用关键字synchronized同步语句块、和使用wait、notify(notifyAll)实现线程的通信,同时,练习使用join实现线程的协作。实验要求在你的文件夹下建立sy6的子文件夹,本次实验中输入的源文件放在该文件夹下,并将该word文件补全后上传。实验内容1、填空publicclassTestSimpleThreadextendsThread{//创建一个线程名为TestSimpleThreadpublicTestSimpleThread(Stringstr){super(str);//调用父类的构造方法给线程名赋值publicvoidrun()//线程执行的代码放在此方法中 for(inti=0;i<5;i++){System.out.println(i+〃〃+getName());Try{sleep((long)(Math,random()*1000));//当前线程休眠•注:Math,random()会产生0~1之间的浮点数.sleep〃的参数为整数类型}catch(TnterruptedExceptione){}}System.out.println(getName()+/zFinish!“);}publicstaticvoidmain(String[]args){newTestSimpleThread(,/Java,z)・start();//仓ll建并启动一个线程newTestSimpleThread("C++")・start();//创建并启动一个线程}}冋答问题: 1)两个线程的匀行结果是否独立,有没有重叠现象?答:是相互独立的,没有重叠现象。2)运行结果确定么? 答:不确定,下面是两次的运行结果卩:SV6>jauacTestSimpleThread.jauaD:S¥6>jauaTestSimpleThFead0Jaua”C++ftJaua1C++L?Jauahc**pC++r□Jaua4Jaua4C**JauaFinish?):SV6>jauaTestSimpleThread5Jaua3C++LC++LJaua>C++?JaualC++JJauaIC++:++Finish?1JauaJauaFinish?2、通过实现接口,进行多线程程序设计(功能同1)publicclassTestSimpleRunnableimplementsRunnable{privateStringstr;//成员变量,表示线程名privateThreadmyThrcad;//成员变量,表示线程publicTestSimpleRunnable(Stringstr)//构造方法{this.str=str;//给线程名赋值 publicvoidmyStart() myThread二newThread(this,str);//创建线程对象myThread.start();//调用start()方法}publicvoidrun()//实现接口Runnable的run()方法{for(inti二0;i<5;i++){System・out・println(i+〃〃+myThread・getName());〃输出当前线程名try{myThread._sleep_((long)(Math,random()*1000));//当前线程休眠}catch(InterruptedExceptione){}//捕捉处理中断}System・out・println(myThread・getName()+"Finish!“);}publicstaticvoidmain(StringEJargs) {newTestSimpleRurmable("Java").myStart();//创建并启动一个线程 newTestSimpleRunnable("C++")・myStart();//创建并启动一个线程}H:SV6>jauacTestSimpleRunnable.JauaH:SV6>jauaTestSimpleRunnable0C++0Jaua1Jaua1C++2Jaua1C++2C++3Jaua4Jaua4C++C++Finish?JauaFinish?3>publicclassCrunchimplementsRunnable{publicintx;publicstaticvoidmain(StringCJargs){Crunchrl=newCrunch():Threadtl二newThread(rl);Thread12二newThread(rl);tl.start(); t2.start();publicvoidrun(){inthold;for(;;){hold二x+1;try{Thread,sleep(1000);}catch(InterruptedExceptione){}x二hold;System・out・println(Thread・currentThread()・getName()+z,valueisnow〃+x);}}}思考:Run()函数是否有问题?如何解决?有问题,将是一个无限运行的程序。4、〃加上互斥锁后的代码publicclassCrunch1implementsRunnable}publicintx; publicstaticvoidmain(String[]args){Crunch1rl=newCrunch();Threadtl=newThread(rl);Threadt2=newThread(rl);tl.start();t2.start();)publicvoidrun(){inthold;for(;;){synchronized(this){//此句的作用是什么?hold=x+l;try{Thread.sleep(1000);}catch(IntcrruptcdExccptionc){}x=hold;System.out.println(Thread.currentThread().getName()uvalueisnowM+x);
此文档下载收益归作者所有
举报原因
联系方式
详细说明
内容无法转码请点击此处