预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验四多线程程序设计 实验目的:理解线程的概念、线程的生命周期,掌握多线程的编程:继承Thread类与使用Runnable接口。 实验环境:安装Windows2000或Windows98计算机和JDK编译器 实验要求: 1、掌握两种创建线程的方法:一种是创建用户自己的线程子类,另一种是在用户自己的类中实现Runable接口。 2、掌握线程优先极。 3、掌握线程的同步方法。 实验内容: 多线程是指同时存在的几个执行体,按几条不同的执行线索共同工作的情况。Java语言的一个重要功能特点就是内置对多线程的支持,踏实的编程人员可以很方便的开发出具有多现成功能,能同时处理多个任务的功能强大的应用程序。 Java中编程实现多线程应用有两种途径:一种是创建用户自己的线程子类,另一种是在用户自己的类中实现Runable接口。无论那种方法,都需要使用到Java基础类库中的Thread类及其方法。 创建Thread类的子类:在这个途径中,用户程序需要创建自己的Thread类的子类,并在子类中重新定义自己的run()方法,这个run()方法中包含了用户线程的操作。这样在用户程序需要建立自己的线程时,他只需要创建一个一定已定义好的Thread子类的实例就可以了。 实现Runnable接口:在这个途径中,已经有了一个父类的用户类可以已通过实现Runable()接口的方法来定义用户线程的操作。我们知道,Runable接口只有一个方法run(),实现这个接口,就必须要定义run()方法的具体内容。用户新建现成的操作也有这个方法来决定。定义好run()方法后,当用户程序需要建立新线程时,只要以这个实现了Runnable()方法的类为参数创建系统类Thread的对象,就可以把用户实现的run()方法继承过来。 1、用创建Thread类的子类的方法实现多线程: 源程序: classFruitThreadextendsThread { publicFruitThread(Stringstr) { super(str); } publicvoidrun() { for(inti=0;i<5;i++) { System.out.println(i+""+getName()); try { sleep((int)(Math.random()*1000)); } catch(InterruptedExceptione){ } } } } classTwoFruit {publicstaticvoidmain(Stringargs[]) {newFruitThread("苹果").start(); newFruitThread("梨").start(); } } 编译:javacFruitThread.java 解释执行:javaTwoFruit 实验结果: 2、用实现Runnable接口的方法实现多线程。 源程序: classoutputClassimplementsRunnable{ Stringname; outputClass(Strings){ name=s; } publicvoidrun(){ for(inti=0;i<3;i++){ System.out.println(name); Thread.yield(); } } } classrunThreads{ publicstaticvoidmain(Stringargs[]){ outputClassout1=newoutputClass("Thread1"); outputClassout2=newoutputClass("Thread2"); Threadt1=newThread(out1); Threadt2=newThread(out2); t1.start(); t2.start(); } } 编译:javacrunThreads.java 解释执行:javarunThreads 实验结果: 3、线程优先级的作用:用继承Thread类和执行Runnable接口的方法创建两个线程,并测试这两个线程的同时运行情况。 a.将两个线程设为同优先级,比较运行情况。 b.将两个线程设为同优先级,比较线程调用sleep()/yeild()方法后出现什么情况。 c.将两个线程设为不同优先级,比较以上两种情况。 a源程序: classrun1ThreadimplementsRunnable { publicvoidrun() { System.out.println("ThisisRunnable"); } } classrun2ThreadextendsThread { publicvoidrun() { System.out.println("Thisisextends"); } } classRu