Java语言程序设计 教学课件 作者 辛运帏 饶一梅 第十一章.ppt

Java语言程序设计 教学课件 作者 辛运帏 饶一梅 第十一章.ppt

ID:50051459

大小:1.41 MB

页数:24页

时间:2020-03-08

Java语言程序设计 教学课件 作者 辛运帏 饶一梅 第十一章.ppt_第1页
Java语言程序设计 教学课件 作者 辛运帏 饶一梅 第十一章.ppt_第2页
Java语言程序设计 教学课件 作者 辛运帏 饶一梅 第十一章.ppt_第3页
Java语言程序设计 教学课件 作者 辛运帏 饶一梅 第十一章.ppt_第4页
Java语言程序设计 教学课件 作者 辛运帏 饶一梅 第十一章.ppt_第5页
资源描述:

《Java语言程序设计 教学课件 作者 辛运帏 饶一梅 第十一章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第11章线程线程和多线程当前大多数操作系统都提供了线程调度,多线程是多任务操作的实现方式之一,从占用系统资源角度来看,可以说它是最好的实现方式。Java语言里,线程表现为线程类,线程类封装了所有需要的线程操作控制。线程类是控制线程行为的惟一的手段。线程的概念程序是一段静态的代码,它是应用程序执行的脚本。程序的每一次执行对应一个进程,这是系统进行资源分配和调度的一个独立单位。线程是进程执行过程中产生的多条执行线索,是比进程单位更小的执行单位,在形式上同进程十分相似——都是用一个顺序执行的语句序列来完成特定的功能。不同的是,线程没

2、有入口,也没有出口,因此其自身不能自动运行,而必须栖身于某一进程之中,由进程触发执行。在系统资源的使用上,属于同一进程的所有线程共享该进程的系统资源,而且线程之间切换的速度比进程切换要快得多。线程可以看作是轻量级的进程。多线程多线程是提高计算机利用率的有效手段,为了达到多线程的效果,Java语言把线程或执行环境(executioncontext)当作一个封装对象,包含CPU及自己的程序代码和数据,由虚拟机提供控制。Java类库中的类java.lang.Thread可以实现多线程,它允许创建线程,并可控制所创建的线程。对多线程的

3、综合支持是Java语言的一个重要特色。线程的结构Java中的线程包括三部分虚拟CPU执行的代码处理的数据。这三方面是各自独立的。一个线程所执行的代码与其他线程可以相同也可以不同,一个线程访问的数据与其他线程可以相同也可以不同。虚拟CPU封装在java.lang.Thread类中,它控制着整个线程的运行,并处理传递给这个类的数据。线程的状态线程一共有四种状态:新建(new)、就绪状态(runnable)、死亡(dead)及阻塞(blocked)。这四个状态及对应的转换关系如图所示。线程的状态刚刚创建的线程处于新建状态。新创建的线

4、程已有了相应的内存空间以及其它资源,但处于不可运行状态。创建线程的语句如下:Threadthread=newThread(“test”)创建线程后,必须调用start()方法来启动线程,这样线程进入就绪状态,排在就绪队列中。就绪队列中的线程都在等待CPU,只要CPU一空闲,系统会从就绪队列中挑选一个马上运行。线程的状态线程执行完毕,或是在运行中调用了Runtime类的exit()方法,都可以导致线程死亡。此时意味着线程的终结。一个正在执行的线程因特殊原因被暂停执行,就进入阻塞状态。引起阻塞的原因很多,如sleep()和wait

5、()是两个常用的引起阻塞的方法。阻塞时线程不能进入就绪队列排队,必须等到引起阻塞的原因消除,才可重新进入就绪队列。在程序中常常调用interrupt()来中断线程。interrupt()不仅可中断正在运行的线程,而且也能中断处于阻塞状态的线程.创建线程创建线程有两种方法一是继承Thread类,并重写类中的run()方法;二是实现Runnable接口。一般地,第二种方法更常用一些。线程所执行的代码都放到run()方法中,当一个线程被创建后,Java运行时环境就会自动调用run()方法,这个方法称为线程体。继承Thread类jav

6、a.lang.Thread是Java中用来表示进程的类,可以定义它的一个子类,创建这个子类的实例就表示创建了一个线程,同时重写Thread类中的run()方法。用Thread类的子类创建线程的过程包括以下三步1)从Thread类派生一个子类,在类中一定要实现run();2)用该类创建一个对象;3)用start()方法启动线程。继承Thread类示例例11-1classLefthandextendsThread{//派生子类publicvoidrun(){……//相应的处理代码}}Lefthandleft=newLefthand

7、();//创建实例left.start();//启动线程继承Thread类示例将上述三步用在一个程序中,见例11-2。publicclassmyThreadextendsThread{publicvoidrun(){while(running){……//执行若干操作sleep(100);}}publicstaticvoidmain(Stringargs[]){Threadt=newmyThread();//创建线程……//执行若干操作}}实现Runnable接口继承Thread类来创建线程的方法有局限性。因为Java不支持多重

8、继承,所以如果一个类需要继承其他类的话,它就不能继承Thread类。因此必须使用实现Runnable接口的方式来创建线程。Runnable接口中只定义了一个方法就是run()方法,也就是线程体。用Runnable接口实现多线程时,也必须实现run()方法,也需要使用start

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。