- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用Java多线程实现数据结构算法动态演示
2002年6月第16卷第2期总48期北京联合大学学报JournalofBeijingUnionUniversityJun.2002Vol.16No.2SumNo.48用Java多线程实现数据结构算法动态演示高翔(北京联合大学应用文理学院,北京100083)[摘要]数据结构是计算机相关专业的重要基础课,算法是数据结构教学的重点和难点。然而用传统的“粉笔+黑板”形式很难将算法的执行过程动态地演示出来,影响了教学效果。因此有必要设计一个数据结构辅助教学系统,帮助学生更快地掌握算法。用Java的多线程技术实现的数据结构辅助教学系统以动画形式表示算法的执行过程,并且还可以同步显示算法的源代码,使算法的执行过程一目了然,具有很好的教学效果。[关键词]Java;多线程;动画[中图分类号]TP312JA[文献标识码]A[文章编号]100520310(2002)0220063204数据结构是计算机程序设计的重要理论基础,是计算机本科和大专的核心课程,也是计算机类专业研究生考试和等级水平考试的必考科目,并且逐渐成为许多理工科专业的热门选修课1。算法是数据结构研究的主要内容之一,也是数据结构教学的重点和难点。但是,在数据结构的教学过程中,使用传统的“粉笔+黑板”形式很难将算法的执行过程动态地演示出来,影响了教学效果。我们承担的北京联合大学的教改项目———《数据结构》远程多媒体教学课件,解决了算法动态演示的问题。本文介绍《数据结构》远程多媒体教学课件的核心技术———用Java的多线程实现数据结构算法动态演示的方法。图1单线程和多线程1原理与实现1.1多线程简介首先介绍数据结构算法动态演示的关键技术———Java的多线程技术。1.1.1程序、进程和线程21)程序是指令序列,它规定了程序的执行路线,其本身实际上只是一段静态的代码。2)进程(Process)是动态的,它是程序的一次执行过程。程序的执行是一个从装入代码、执行到结束的过程,也就是进程从生成、进行到消亡的过程。同一段程序代码如果被装入几个不同的内存区域分别执行则形成多个不同的进程。3)线程(Thread)是线程控制(ThreadControl)的简写,是程序中的一个执行流。线程像进程一样是动态的,也有一个从生成、生存到消亡的过程。但线程是比进程更小的执行单位,有时称为轻量级进程(LWP—lightweightprocess)。创建线程比创建进程要节省资源。4)单线程(SingleThread)是指程序只含有单个执行流。所谓单个执行流是指一个程序只有一条从头到尾的执行路线,或者说在程序执行期间的任一时刻,仅有一个执行点,见图1(参考sun官方网站)。5)多线程(Multithread)是指程序含有多个执行[收稿日期]2002-05-09[作者简介]高翔(1957—),女,黑龙江哈尔滨人,北京联合大学应用文理学院信息科学系讲师,长期从事数据结构、汇编语言等教学工作以及计算机辅助教学研究工作。流。多线程机制允许单个程序通过建立多个并行执行的线程来完成各自的任务。这些并行执行的线程可以执行相同的代码,也可以执行不同的代码。1.1.2实现多线程的方法Java程序一般有一个默认的主线程。如果是Java的Application(应用程序),主线程由main()方法实现;如果是Java的Applet,主线程由浏览器启动执行Applet实现。如果需要多个线程,就必须进行多线程程序设计。在java.lang包中定义了类Thread。Thread是线程类,是Java多线程程序设计的基础。Thread有以下几种主要方法:}}}2)实现Runnable接口:Runnable是在java.lang包中定义的接口,它只有一个方法run()。当某个类已经继承了一个类时(Java规定类不能多继承),可以采用在类中实现(implements)Runnable接口,然后在类中定义run()方法实现线程。具体做法如下:publicclassAnimationClassextendsAppletimple2mentsRunnable{1)2)3)启动线程:start();停止线程:stop();定义线程体:run()。ThreadalgorithmThread=null;ΠΠ声明Thread线程类对象algorithmThread线程的行为由线程体决定,而线程体由线程类的run()方法定义3。设计线程有2种方法:1)继承Thread类:可以通过继承Thread类,然后重载Thread类中的run()方法定义线程:publicclassAlgorithmThreadextendsThread{ΠΠ定义用户的Thread子类AlgorithmThread类ΠΠ启动线程的方法publicvoidstartAlgorithmThread(){Π
文档评论(0)