实验六多线程基础编程

实验六多线程基础编程

ID:46689811

大小:79.00 KB

页数:10页

时间:2019-11-26

上传者:U-7604
实验六多线程基础编程_第1页
实验六多线程基础编程_第2页
实验六多线程基础编程_第3页
实验六多线程基础编程_第4页
实验六多线程基础编程_第5页
资源描述:

《实验六多线程基础编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

实验六多线程基础编程实验目的通过继承线程类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);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭