ChapterJava多线程.ppt_第1页
ChapterJava多线程.ppt_第2页
ChapterJava多线程.ppt_第3页
ChapterJava多线程.ppt_第4页
ChapterJava多线程.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主讲教师 英明 Chapter15Java多线程机制 Java语言的一个重要功能特点就是内置对多线程的支持 它使得编程人员可以很方便地开发出具有多线程功能 能同时处理多个任务的功能强大的应用程序 方便地实现任务的并发处理 引言 15 1程序 进程 线程 程序是为完成特定任务 用某种语言编写的一组指令的集合 指一段静态的代码 进程是程序的一次动态执行过程 是系统进行调度和资源分配的一个独立单位 线程是比进程更小的执行单位 也是一个动态的概念 15 1 1线程的特点 一个线程有它自己的入口和出口 以及一个顺序执行的序列线程不能独立存在 必须存在于进程中 各线程间共享进程空间的数据 线程创建 销毁和切换的负荷远小于进程 又称为轻量级进程 lightweightprocess 15 1 2进程与线程的关系 由谁管理 线程由程序负责管理 而进程由操作系统调度 线程依附于进程线程依附于进程的上下文环境中 随进程或父线程执行后启动 地址空间多个线程使用相同的地址空间 因此线程之间的通信非常方便 而进程之间使用不同的地址空间 可以单独执行 15 1 3多线程 多线程是指同时存在几个执行体 按几条不同的执行线索共同工作的情况 多线程实现单个进程中的并发计算 各线程间共享进程空间的数据 并利用这些共享单元来实现数据交换 实时通信与必要的同步操作 15 1 4进程与多线程 15 1 5线程的调度 调度策略时间片抢占式 高优先级的线程抢占CPUJava的调度方法同优先级线程组成先进先出队列 使用时间片策略对高优先级 使用优先调度的抢占式策略 1 2 15 1 6主线程 每个Java程序都有一个隐含的 主线程 Java应用程序总是从主类的main方法开始执行 当JVM加载代码 发现main方法之后 就会启动一个线程 这个线程称作 主线程 该线程负责执行main方法 15 1 7线程的生命周期 要想实现线程 必须在主线程中创建新的线程对象 Java使用Thread类及其子类的对象来表示线程 在它的一个完整的生命周期中通常要经历如下的五种状态 1 新建 Newborn 当一个Thread类或其子类的对象被声明并创建时 新生的线程对象处于新建状态 2 就绪 Runnable 处于新建状态的线程被调用Start 启动后 将进入线程队列等待CPU时间片 此时它已具备了运行的条件 15 1 7线程的生命周期 3 运行 Running 当就绪的线程被调度并获得处理器资源时 便进入运行状态 run 方法定义了线程的操作和功能 4 阻塞 Blocked 在某种特殊情况下 让出CPU并临时中止自己的执行 进入阻塞状态 如 让出CPU使用权 使用sleep 使用wait 或等待输入输出操作 5 死亡 Dead 线程完成了它的全部工作或线程被提前强制性地中止 如 使用了stop 或destroy staticvoidsleep 指定时间毫秒 令当前活动线程在指定时间段内放弃对CPU控制 使其他线程有机会被执行 时间到后重新排队 15 1 7线程的生命周期 staticvoidyield 对正在执行的线程若就绪队列中有与当前线程同优先级的排队线程 则当前线程让出CPU控制权 移到队尾若队列中没有同优先级的线程 忽略此方法 15 2Java对多线程的支持 Java提供对多线程的支持Thread类start stop run Runnable接口实现多线程的两种编程方法继承Thread类实现Runnable接口 15 3Thread类 Thread类在java lang包构造函数Thread Thread Stringthreadname 指定线程实例名线程的优先级控制三个常量 MAX PRIORITY10 MIN PRIORITY1 NORM PRIORITY5 getPriority 返回线程优先值setPriority intnewPriority 改变线程的优先级线程创建时继承父线程的优先级 15 3Thread类 Thread类的重要方法 run 定义线程的具体操作系统调度此线程时自动执行初始时无具体操作内容如何编程呢 继承Thread类 定义run 方法 生成与运行线程 publicclassTestThread1 publicstaticvoidmain Stringargs Tread1thread1 Tread2thread2 thread1 newTread1 创建线程1thread2 newTread2 创建线程2thread1 start 启动线程1thread2 start 启动线程2for inti 1 i 8 i System out println 主线程运行 classTread1extendsThread publicvoidrun for inti 1 i 10 i System out println 线程1运行 classTread2extendsThread publicvoidrun for inti 1 i 10 i System out println 线程2运行 15 3 1Thread类的有关方法 voidstart 由Newborn到Runnable启动线程run 线程在被调度时执行的操作staticvoidsleep 指定时间毫秒 令当前活动线程在指定时间段内放弃对CPU控制 使其他线程有机会被执行 时间到后重到就绪排队产生异常InterruptedException 此方法需要放入try块中 stop 强制线程生命期结束 15 3 1Thread类的有关方法 staticvoidyield 对正在执行的线程若就绪队列中有与当前线程同优先级的排队线程 则当前线程让出CPU控制权 移到队尾若队列中没有同优先级的线程 忽略此方法 15 3 1Thread类的有关方法 booleanisAlive 返回

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论