实验四的运行结果如下: 第31页
实验五的运行结果如下所示: 五.试验中遇到的问题及体会 这次实验的难度总体感觉比前几次的确大了很多,甚至有的看完以后一点感觉都没有,比如实验四,乍一看连算法都不知道如何设计,后来在网上查了一下,又仔细理解了一下才勉强能看懂,对于第一二两个实验,模仿着课本上的例题也勉强把它给完成了,不过是费了好半天劲程序才予以实现,至于第三个实验,考试的时候一方面由于知识没全掌握,另一方面也由于紧张导致功能没有实现,考完后又仔细地想了想,终于才将其实现,至于第五个实验,由于设计方法跟课本例8.13基本相似,又加上一些网络资源,最后还是将其实现了。 通过这次实验让我意识到自己掌握的知识还很不到位,同时也感觉到了应用网络资源学习的重要性,要想掌握一门课程必须多看,多听,多想,多问,勤奋专研,只有这样才可能真正学到点东西,为以后各专业课程的学习奠定一个坚实的基础。 第32页
太原理工大学学生实验报告
学院名称 学生姓名 课程名称 计算机科学与技术 专业班级 实验日期 2011.10.26 学号 成绩 Java语言程序设计 实验题目 多线程 一.实验目的 1. 线程的概念,线程的生命周期。 2. 多线程的编程,扩展Thread类与使用Runnable接口。 3. 使用多线程机制实现动画。 二.实验内容 1. 运行下面的程序,理解用创建Thread子类的方法实现多线程。 import java.util.*; public class S09_01_Thread extends Thread{ int pauseTime; String name; public S09_01_Thread(int x,String n){ pauseTime=x; name=n; } public void run(){ while(true){ try{ System.out.println(name+\ Thread.sleep(pauseTime); }catch(Exception e) {System.out.println(e);} } } static public void main(String args[]){ S09_01_Thread tp1=new S09_01_Thread(3000,\ tp1.start(); S09_01_Thread tp2=new S09_01_Thread(3000,\ tp2.start(); } } 2. 运行下面的程序,理解用实现Runnable接口的方法实现多线程。 import java.util.*; public class S09_02_Thread implements Runnable{ int pauseTime; String name; public S09_02_Thread(int x,String n){ pauseTime=x; 实验地点 多学科楼六层606室 第33页
指导教师 相洁 name=n; public void run(){ while(true){ try{ System.out.println(name+\ Thread.sleep(pauseTime); }catch(Exception e) {System.out.println(e);} } } static public void main(String args[]){ Thread tp1=new Thread(new S09_02_Thread(1000,\ tp1.start(); Thread tp2=new Thread(new S09_02_Thread(3000,\ tp2.start(); } } 3. 创建简单的程序ThreeThread.java,该程序将创建三个线程,每个线程应当显示它所运行的时间(可以考虑使用Date类或Calendar类)。 三.程序源代码 3. import java.util.*; public class L09_03_ThreeThread extends Thread{ int pauseTime; String name; public L09_03_ThreeThread(int x,String n){ pauseTime=x; name=n; } public void run(){ while(true){ try{ System.out.println(name+\ }catch(Exception e) {System.out.println(e);} } } static public void main(String args[]){ L09_03_ThreeThread tp1=new L09_03_ThreeThread(1000,\ tp1.start(); L09_03_ThreeThread tp2=new L09_03_ThreeThread(2000,\ tp2.start(); L09_03_ThreeThread tp3=new L09_03_ThreeThread(3000,\ tp3.start(); } } 四.实验结果 第34页
实验一的运行结果如下所示: 实验二的运行结果如下所示: 实验三的运行结果如下所示: 第35页
五.试验中遇到的问题及体会 在java程序设计中,所有进程都是包含线程概念的,一般都是把主程序当作主线程。对多线程的综合支持是java语言的一个重要特色,在java中,内置了Thread类来实现多线程,当程序引用了java.lang.Thread类时,也就引入了一个java执行环境。当程序加载到内存时,启动主程序,如果需要使用其他线程,则可以采用以下两种方式创建新的线程:一种是继承java.lang.Thread类,用它覆盖Thread类的run()方法;另一种是编写一个类,使之实现java.lang.Runnable接口,然后在Thread构造函数中使用它。第一种方式只能在类没有继承其他任何类的情况下才能使用,因为java不允许多重继承。因此,如果一个类要继承其他的类,最好选用第二种方法,这样会有更大的灵活性。 实验一二程序的调试很顺利,没有出现任何问题,但一开始函数Date(System.currentTimeMillis()的确看不懂,不过查看了帮助文档后都还勉强能懂,至于实验三由于有实验一二做例子,所以考虑起来也不是很麻烦,也是比较容易就实现了。虽然实验做了,但对于多线程的具体编程应用,由于课时比较短,匆匆忙忙就结课了,所以总体来说还没掌握好,以后有时间的话,我想再返回来重新学一下,希望能掌握。
第36页