资源描述:
《基于java多线程的演示程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于Java多线程的演示程序设计2007年第10期汁算机与现代化JISUANJIYUXlANDAIHUA总第146期文章编号:1006.2475(2007)10-0077-03基于Java多线程的演示程序设计刘洪,郑建翔,梁旗军(南昌航空工业学院,江西南昌330063)摘要:介绍了用Java多线程开发的一个操作系统演示程序,该程序动态演示操作系统中多线程的调度过程.学生通过该演示程序更直观地了解线程的调度原理,加深对线程概念的理解.关键词:多线程演示程序;Runnable接口中图分类号:T
2、,3Il文献标识码:ADemoDevelop
3、edbyJavaMultipleThreadsuuHong,ZHENGJian—xiang.LIANGQi—jun(NanehangInstituteofAeronauticalTechnology,Nanehang330063,China)Abstract:ThispaperintroducesademoofoperatingsystemdevelopedbyJavaMultipleThreads.Itcalldynamicallydemonstratethescheduleprocessesofmultiplethreadsint
4、heoperatingsystem,whichmaymakestudentsknowthethreadscheduleprincipleintuitivelyandgivethemadeepimpressiononthread.Keywords:multiplethread;demo;RunnableinterfaceO引言.多线程在计算机操作系统的学习中概念抽象,难教难学,比较好的教学方法就是有一个直观的多线程CAI教程.但至今为止,在众多眼花缭乱的计算机CAI教程中关于多线程演示的少之甚少,且大多是以显示结果的形式出现.基于这种情
5、况,怎样才能给学习者以直观的概念.计他们更深刻地了解多线程是本文的研究目的,线程也称为轻质进程,是进程内的一个相对独立的执行流Java提供的多线程功能使得在一个程序里可同刚'执行多个小任务,多线程带来的好处是更好的交互性能和实时控制性能.1线程状态的转换线程从创建到执行完毕的过程称为线程的生命周期.在整个生命周期中,线程总是处于图l所示的几种状态中的某一种状态.(1)新建状态一就绪状态.图1线程状态转换图一个新创建的线程(使用new+Thread构造方法创建的对象)不会自动运行,此时处于新建(New)状态.当调用线程的start()方
6、法时,该线程进入就绪(Ready)状态.(2)就绪状态——运行状态.Java运行时系统提供线程调度器按照一定的规则进行调度,本文提到了FIFO和优先级调度,一旦某个线程获得执行机会,则立即进入运行(Running)状态,开始执行线程体代码.(3)执行状态——阻塞状态.处于执行状态的线程可能因某种事件的发生而收稿日期:2006—10—10作者简介:刘洪(1962.),男,江西南昌人.南昌航空工业学院计算机学院副教授,硕士,研究方向:计算机控制,操作系统;郑建翔(1971.),女,汀西高安人.讲师.硕士,研究方向:嵌入式系统;梁旗军(19
7、80一),男,广东开平人,助教.78计算机与现代化2007年第1O期进八阻塞lBlocked)状态,暂时停止执行.例如线程进行I/O操作,等待用户输人数据.当一个运行状态的线程发生阻塞时,调用器立即调用就绪队列中的另一个线程开始运行.(4)阻塞状态——就绪状态.当处于阻塞状态的线程所等待的条件已经具备,例如用户输人操作已经完成时,该线程将解除阻塞,进入就绪状态.(5)运行状态——终止状态线程的Fun()方法常执行完毕后.其运行也就自然结束线程进人终止(Exit)状态也可以在运行过程中,jFIF常地终L卜一个线程的执行,例如调用stop
8、()方法.2线程调度算法在此演示系统中采用了两种线程调度算法:FIFO(先来先服务)和优先级调度算法.(1)FIFO(先来先服务)调度算法.该算法是按照线程到达就绪队列的时间顺序分配CPU,这是一种不可强占式的算法.一旦线程占用了CPU.它一直运行到结束或因阻塞而自动放弃CPU.这种调度算法不能为…个优先级高的紧急线程优先分配处理机,故该算法不能直接用于实时和交白一式分时系统中,,(2)优先级调度算法.在Java中每个线程都具有一个优先级属性,用1~10之间的整数指定10级优先级别.在同一时刻有多个处于就绪状态的线程供选择时,线程调度
9、程序将按如下规则选取其中一个投入运行:①总是选取处于就绪状态线程中优先级最高的线程投入运行;②不断地询问线程状态并唤醒被阻塞的线程,一旦有一个线程从阻塞状态变成就绪状态,重新计算所有处于就绪状态线程的优先级,从中选取优先