第七章java多线程_第1页
第七章java多线程_第2页
第七章java多线程_第3页
第七章java多线程_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java 线程 实验指导课实验目标: 掌握多线程的概念,学习如何编写基本线程程序。第一部分:指导(20分钟)练习1:此程序将创建两个线程。每个线程均输出“你好”,接着输出线程名及消息数字。每个线程均输出5次“你好”,可以查看这些消息是如何以交叉方式显示的。下面解释了代码中包括的语句。1, 定义线程的类OurRunnableClass 。此类将实现接口Runnable,意味着它可以当一个线程。其代码为: class OurRunnableClass implements Runnable2.定义线程的成员变量和构造函数。private String mName;private int mCoun

2、ter;public OurRunnableClass(String pName)mName=pName;mCounter=0;第一个成员变量用于存放线程的名称。请注意,这是一个由程序给定的逻辑名称,java虚拟机并不能通过此名称了解它,mCounter变量用于跟踪消息数,构造函数仅为成员变量mName初始化为参数的值,并将计数器初始化为0。3.实现Runnable接口所需的run()方法。任何时候启动线程,都首先执行此方法。此方法仅完成在控制台上将消息输出5次。其代码为:public void run() for(int cnt=0;cnt<5;cnt+)mCounter+;Syste

3、m.out.println("你好,来自"+mName+" "+mCounter);4.定义主类,以实例化线程。将这个类声明为public类型。public class RunnableApp 5.在类中定义main()方法。此方法将实例化两个线程。public static void main(String args) Runnable objOne=new OurRunnableClass("第一个线程");System.out.println("在启动第一个线程之前");Thread thOne=new Th

4、read(objOne);thOne.start();Runnable objTwo=new OurRunnableClass("第二个线程");System.out.println("在启动第二个线程之前");Thread thTwo=new Thread(objTwo);thTwo.start();下面是完整的程序:class OurRunnableClass implements Runnableprivate String mName;private int mCounter;public OurRunnableClass(String pNam

5、e)mName=pName;mCounter=0;public void run() for(int cnt=0;cnt<5;cnt+)mCounter+;System.out.println("你好,来自"+mName+" "+mCounter);public class RunnableApp public static void main(String args) Runnable objOne=new OurRunnableClass("第一个线程");System.out.println("在启动第一个线程之

6、前");Thread thOne=new Thread(objOne);thOne.start();Runnable objTwo=new OurRunnableClass("第二个线程");System.out.println("在启动第二个线程之前");Thread thTwo=new Thread(objTwo);thTwo.start();将文件以RunnableApp.java 文件名保存。在命令提示符处键入下列命令,以编译和执行文件。输出结果如下图所示:第二部分:练习(80分钟)1. 编写一个具有多线程功能的Applet。此Appl

7、et应该可以动态绘制随机生成、大小不同的矩形。提示:创建一个扩展Applet并实现Runnable接口的类。在init()方法中启动新线程。在paint()方法中生成随机数,作为参数传递给绘制矩形的方法。在run()方法中创建一个无限循环。从循环内部调用repaint(),以调用paint(),并在无限循环中然线程休眠一段时间,以达到在重画之前有一定时间的停顿。2. 编写一个创建三个线程对象的程序。每个线程应该输出一则消息,并在消息后进跟字符串“消息结束”。在线程输出消息后,应暂停一秒钟,然后才输出“消息结束”。首先应该有线程1输出消息,然后是线程2和线程3.提示:创建一个类Callme,其中

8、包含call方法。此方法输出消息后暂停1秒,然后输出“消息结束”。创建一个类Caller,这个类是一个线程类,要求继承Runnable接口,并实现run()方法。创建一个具有main()方法的类,此方法中将启动三个Caller线程。使用同步机制控制三个Caller线程对象分别调用Callme对象的call方法。3. 编写一个程序,用于显示线程通信。创建一个具有邮箱功能的类。这个类具有两个方法,分别用于发送和接受消息。创建一个用于生成消息的类Producer和一个用于检索这些消息的类Consumer。代码逻辑应为:在一个线程将放入邮箱时,另一个线程会对消息进行检索,然后显示在控制台上。提示:创建一个具有两个synchronized方法的类,这两个方法分别用于放入消息和检索消息。创建一个Producer类,用于将消息放入邮箱。创建一个Consumer,用于在标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论