第9章 Java多线程

第9章 Java多线程

ID:46570527

大小:373.00 KB

页数:42页

时间:2019-11-25

第9章 Java多线程_第1页
第9章 Java多线程_第2页
第9章 Java多线程_第3页
第9章 Java多线程_第4页
第9章 Java多线程_第5页
资源描述:

《第9章 Java多线程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第9章Java多线程学习导读多线程机制使得程序的多个子任务能够“同时”执行多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况。Java语言实现了对多线程的支持,它使得编程人员可以很方便地开发出能同时处理多个任务的功能强大的应用程序。在Java语言中,不仅语言本身有多线程的支持,可以方便地生成多线程的程序,而且运行环境也利用多线程的应用程序并发提供多种服务。本章介绍如何实现Java语言中的多线程机制2课程结构9.1多线程基本概念9.2创建线程的方式9.3线程的挂起与唤醒9.4多线程问题39.1多线程基本概

2、念文件输入输出装置各种系统资源数据区段程序区段只有一个地方在执行文件输入输出装置各种系统资源数据区段程序区段同时有数个地方在执行传统的进程多线程的任务49.1多线程基本概念多线程的优势:减轻编写交互频繁、涉及面多的程序的困难.程序的吞吐量会得到改善.由多个处理器的系统,可以并发运行不同的线程.(否则,任何时刻只有一个线程在运行)59.1多线程基本概念一、线程与进程的区别:多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响.线程本身的数据通常只有寄存器数据,以及一个程序执行

3、时使用的堆栈,所以线程的切换比进程切换的负担要小。69.1多线程基本概念二、线程的状态和生命周期1.新建2.就绪3.运行4.阻塞5.死亡79.1多线程基本概念1.新建当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。此时它已经有了相应的内存空间和其他资源,并已被初始化。2.就绪处于新建状态的线程被启动后,将进入线程队列排队等待CPU时间片,此时它已经具备了运行的条件,一旦轮到它来享用CPU资源时,就可以脱离创建它的主线程独立开始自己的生命周期了。另外,原来处于阻塞状态的线程被解除阻塞后也将

4、进入就绪状态。89.1多线程基本概念3.运行当就绪状态的线程被调度并获得处理器资源时,便进入运行状态。run方法每一个Thread类及其子类的对象都有一个重要的run()方法,当线程对象被调度执行时,它将自动调用本对象的run()方法,从第一句开始顺序执行。run()方法定义了这一类线程的操作和功能。99.1多线程基本概念4.阻塞一个正在执行的线程如果在某些特殊情况下,如被人为挂起或需要执行费时的输入输出操作时,将让出CPU并暂时中止自己的执行,进入阻塞状态。阻塞时它不能进入排列队列,只有当引起阻塞的原因被消除时,线

5、程才可以转入就绪状态,重新进到线程队列中排队等待CPU资源,以便从原来终止处开始继续执行。109.1多线程基本概念5.死亡处于死亡状态的线程不具有继续运行的能力。线程死亡的原因有两个:一个是正常运行的线程完成了它的全部工作,即执行完了run()方法的最后一个语句并退出;另一个是线程被提前强制性地终止,如通过执行stop()方法或destroy()终止线程。119.1多线程基本概念三、线程调度与优先级处于就绪状态的线程排队等候处理器资源线程先分配CPU资源的先后,称为线程调度为了方便线程调度,多线程系统会给每个线程自动

6、分配一个线程的优先级,任务较紧急重要的线程,其优先级就较高;相反则较低在Java系统中,线程调度采用优先级基础上的“先到先服务”原则129.1多线程基本概念四、线程组在Java中,线程组是类ThreadGroup的对象,每个线程Thread都隶属于惟一一个线程组这个线程组在线程创建时指定并在线程的整个生命期内都不能更改用户可以通过调用包含ThreadGroup类型参数的Thread类构造函数来指定线程所属的线程组。139.1多线程基本概念在创建线程时显式地制定线程组,采用下述三种构造方法之一:1)Thread(Thr

7、eadGroup,Runnable)2)Thread(ThreadGroup,String)3)Thread(ThreadGroup,Runnable,String)若没有指定,则线程默认地隶属于名为system的系统线程组例如,下面的语句创建了一个名为myThreadGroup的线程组:ThreadGroupmyThreadGroup=newThreadGroup(“myGroupofThreads”)149.1多线程基本概念线程组的作用:Java允许对一个线程组中的所有线程同时进行操作,比如可以通过调用线程组的相

8、应方法来设置其中所有线程的优先级,也可以启动或阻塞其中的所有线程Java的线程组机制的另一个重要作用是线程安全。线程组机制允许通过分组来区分有不同安全特性的线程,对不同组的线程进行不同的处理,还可以通过线程组的分层结构来支持不对等安全措施的采用159.1多线程基本概念五、守护线程169.1多线程基本概念对线程的综合支持是Java技术的一个重要特

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

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

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