大学教程从零开始多线程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《大学教程从零开始多线程课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 教程 从零开始 多线程 课件
- 资源描述:
-
1、8.1线程的基本概念线程的基本概念n什么是线程?什么是线程?n线程就是程序中单独顺序的流控制。线程本身线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。不能运行,它只能用于程序中。n线程线程(thread)就是进程中的一个执行线索。就是进程中的一个执行线索。Java虚拟机虚拟机允许进程中同时执行多个线程。每个线程都有一个优允许进程中同时执行多个线程。每个线程都有一个优先级。具有较高优先级的线程先执行。先级。具有较高优先级的线程先执行。n线程是操作系统分配线程是操作系统分配 CPU 时间的基本实体。每一时间的基本实体。每一个应用程序至少有一个线程,也可以拥有多个线程。个应用程序
2、至少有一个线程,也可以拥有多个线程。线程是程序中的代码流。多个线程可以同时运行并能线程是程序中的代码流。多个线程可以同时运行并能共享资源。共享资源。n线程与进程不同,每个进程都需要操作系统为其线程与进程不同,每个进程都需要操作系统为其分配独立的地址空间,而同一进程中的各个线程是在分配独立的地址空间,而同一进程中的各个线程是在同一块地址空间中工作。同一块地址空间中工作。n 在在 Java 程序中,一些动态效果程序中,一些动态效果(如动画的实现、如动画的实现、动态的字幕等动态的字幕等)常利用多线程技术来实现。常利用多线程技术来实现。n什么是多线程?什么是多线程?n多线程则指的是在单个程序中可以同时
3、运行多多线程则指的是在单个程序中可以同时运行多个不同的线程执行不同的任务个不同的线程执行不同的任务.8.1.1线程的生命周期线程的生命周期线程的生命周期:线程的生命周期:一个线程从创建到死一个线程从创建到死亡的过程。亡的过程。线程的生命周期可分为五个状态:线程的生命周期可分为五个状态:1.1.创建状态创建状态 2.2.就绪状态就绪状态3.3.运行状态运行状态 4.4.阻塞状态阻塞状态 5.5.死亡状态死亡状态5线程的生命周期线程的生命周期线程的状态转换图:线程的状态转换图:6线程的生命周期线程的生命周期1.创建状态 当用当用new操作符创建一个新的线程对象时,操作符创建一个新的线程对象时,该线
4、程处于创建状态。该线程处于创建状态。处于创建状态的线程只是一个空的线程对象,处于创建状态的线程只是一个空的线程对象,系统不为它分配资源系统不为它分配资源此时只能调用此时只能调用start方法启动该线程,调用其方法启动该线程,调用其它任何方法都会产生线程非法状态异常。它任何方法都会产生线程非法状态异常。7线程的生命周期线程的生命周期2.就绪状态就绪状态 执行线程的执行线程的start()方法将为线程分配必须的方法将为线程分配必须的系统资源,安排其运行,并调用线程体系统资源,安排其运行,并调用线程体run()方法,这样就使得该线程处于可运行方法,这样就使得该线程处于可运行(Runnable)状态。
5、状态。这一状态并不是运行中状态(这一状态并不是运行中状态(Running),因,因为线程也许实际上并未真正运行。为线程也许实际上并未真正运行。8线程的生命周期线程的生命周期3.3.运行状态运行状态 是某个就绪状态的线程获得是某个就绪状态的线程获得CPUCPU资源资源,正在正在运行运行,如果有更高优先级的线程进入就绪状态如果有更高优先级的线程进入就绪状态,则则该线程就被迫放弃对该线程就被迫放弃对CPUCPU的控制进入就绪状的控制进入就绪状态态,可使用可使用yield()yield()方法主动放弃方法主动放弃CPU,CPU,也可也可能由于执行结束或执行能由于执行结束或执行stop()stop()方
6、法进入死方法进入死亡状态亡状态.9线程的生命周期线程的生命周期4.4.阻塞状态阻塞状态 当发生下列事件时,处于运行状态的线程会转入当发生下列事件时,处于运行状态的线程会转入到阻塞状态。到阻塞状态。调用了调用了sleepsleep()方法;()方法;线程调用线程调用waitwait方法所等待的特定条件的满足方法所等待的特定条件的满足 线程输入线程输入/输出阻塞输出阻塞 10线程的生命周期线程的生命周期从阻塞状态恢复到就绪状态三种途径:从阻塞状态恢复到就绪状态三种途径:处于睡眠状态的线程在指定的时间过去后处于睡眠状态的线程在指定的时间过去后 如果线程在等待某一条件,另一个对象必须通过如果线程在等待
7、某一条件,另一个对象必须通过notify()或或notifyAll()方法通知等待进程条件的改变方法通知等待进程条件的改变 如果线程是因为输入如果线程是因为输入/输出阻塞,输入输出阻塞,输入/输出完成输出完成 118.1.28.1.2线程的优先级线程的优先级1.线程的优先级及其设置线程的优先级及其设置 设置优先级是为了在多线程环境中便于系统对设置优先级是为了在多线程环境中便于系统对线程的调度,优先级高的线程将优先执行线程的调度,优先级高的线程将优先执行 一个线程的优先级设置遵从以下原则:一个线程的优先级设置遵从以下原则:线程创建时,子进程继承父进程的优先级线程创建时,子进程继承父进程的优先级线
8、程创建后,可通过调用线程创建后,可通过调用setPriority()方法改变优先方法改变优先级。级。线程的优先级是线程的优先级是1-10之间的正整数。之间的正整数。1-MIN_PRIORITY,10 MAX_PRIORITY5-NORM_PRIORITY12线程的优先级线程的优先级2.线程的调度策略线程的调度策略 线程调度器选择优先级最高的线程运行。但是,如果线程调度器选择优先级最高的线程运行。但是,如果发生以下情况,就会终止线程的运行发生以下情况,就会终止线程的运行线程体中调用了线程体中调用了yield()方法,让出了对方法,让出了对CPU的占用权的占用权线程体中调用了线程体中调用了slee
展开阅读全文