Java就业培训教程第五章_多线程.docx,我们先讲解一下什么是进程。简单地说,在多任务系统中,每个独立执行的程序称为进程,也就是“正在进行的程序”。我们现在使用的操作系统一•般都是多任务的,即能够同时执行多个应川程序,。实际情况是,操作系统负责对CPU等设备资源进行分配和管理,虽然这些设备某一时刻只能做一件事,但以非常小的时间间隔交替执行多个程序,就可以给人以同时执行多个程序的感觉。如果我们同时运行记事本程序的两个实例,这就是两个不同的进程。我有一个朋友对我说,Windows真好,我在从C盘向D盘拷贝文件的同吋,乂可从E盘向F盘拷贝文件,拷贝效率人为提高。大家対此话有何感想?我--听,就知道他充其量只能算是业余计算机爱好者了,因为CPU只有一个,每个进程都有独立的代码和数据空间(进程上下文),在两个文件拷贝进程间切换需要额外的开销,反而比先执行完C盘向D盘的拷贝,再启动E盘向F盘的拷贝慢。,一个线程就是一个程序内部的一条执行线索。在单线程小,稈序代码按调用顺序依次往下执行,在这种情况下,当主函数调用了子函数,主函数必须等待子函数返冋后才能继续往下执行,不能实现两段程序代码同时交替运行的效果。如果要一程序中实现多段代码同时交替运行,就需产生多个线程,并指定每个线程上所要运行的程序代码段,这就是多线程。当程序启动运行时,就口动产牛了一个线程,主函数main就是在这个线程上运行的,当我们不再产牛新的线程时,我们的程序就是单线程的,比如我们以前的例子,它们都是单线程的。创建多线程有两种方法:继承Thread类和实现Runnable接口,在下面的小节里,我们分别进行讲解。,一个Thread类的对彖代表一个线程,而且只能代表一个线程,通过Thread类和它定义的对象,我们可以获得当前线程对象、获取某一线程的名称,可以实现控制线程暂停一段时间等功能,关于Thread类的具体应川与讲解,我们将在文屮稍后的地方逐步涉及,在学完本章后,大家也霊通读一下JDK文档中有关Thread类的方法及说明,并动手编写一些小程序对其中的某些方法测试验证一下,以便对Thread类有更全血的了解与认识。下而,我们就开始通过程序來详细讲解吧!程序清单:(Stringargs[])newTestThread().run();while(true)代码块2classTestThreadpublicvoidrun()(().getName()+11isrunning11);}一个代码段被执行,一定是在某个线程上运行的,代码与线程密不可分,同一段代码可以与多个线程相关联,在多个线程上执行的也可以是相同的一段代码,好比多个火年售票处按相同的操作流程(相当程序代码)同时售票一样。在上面的代码中,()静态函数获得该代码当前执行时対应的那个线程对象。得到当前线程対象后,我们又调用了线程对象的getName()方法,取出当前线程的名称字符串。代码块1处的代码能否运行呢?,并运行一下,看看结杲如何?C:\ProgramFiles\XinoKSoftware\JCreatorPro\-|n|x|图5」屏幕上不停地打印Ltlmainisrunning,而不是mainthreadisrunning,这说明代码块1处的程序没有运行,因为代码块2先于代码块1运行,且代码块2为无限循环,代码块1永远没有机会运行。同吋,我们也能够看到当前线程的名称为main。我们将代码进行如下修改(为了达到对比讲解,保持上下连贯性的效果,我们对修改过的地方进行注释,而不是彻底删除掉):程序清单:(Stringargs[])newTestThread().start{);/*run()*/1・让TestThread类继承Thread类-|n|x|Thread-1isThread-lisThread-1isThr
Java就业培训教程第五章 多线程 来自淘豆网m.daumloan.com转载请标明出处.