教学多线程专业知识讲座省公共课一等奖全国赛课获奖课件.pptx
《教学多线程专业知识讲座省公共课一等奖全国赛课获奖课件.pptx》由会员分享,可在线阅读,更多相关《教学多线程专业知识讲座省公共课一等奖全国赛课获奖课件.pptx(70页珍藏版)》请在咨信网上搜索。
1、java多多线程程序程程序设计第1页l程序、进程、线程程序、进程、线程l多任务、多进程、多线程多任务、多进程、多线程lJava对多线程支持、对多线程支持、Java根本程根本程lJava中创建线程方法中创建线程方法l线程休眠过程线程休眠过程l线程生命周期线程生命周期l线程调度和优先级线程调度和优先级内 容 提 要 第2页程序、进程程序、进程 v程序:计算机指令集合,一段静态代码,是应用软件执行程序:计算机指令集合,一段静态代码,是应用软件执行蓝本。它以文件形式存放在磁盘上。蓝本。它以文件形式存放在磁盘上。v进程:一个独立程序每一次运行称为一个进程,是程序一进程:一个独立程序每一次运行称为一个进程
2、,是程序一次动态执行过程,它对应了从代码加载、执行到执行完成次动态执行过程,它对应了从代码加载、执行到执行完成一个完整过程,这个过程也是进程本身从产生、发展到消一个完整过程,这个过程也是进程本身从产生、发展到消亡过程。作为执行蓝本同一段程序能够被屡次加载到系统亡过程。作为执行蓝本同一段程序能够被屡次加载到系统不一样内存区域分别执行,形成不一样进程。比如:不一样内存区域分别执行,形成不一样进程。比如:n用word编辑文稿时,同时在另一个窗口下载音乐,这两个独立程序在同时运行,称为两个进程。n一个应用程序执行(如java程序)也对应于一个进程。n操作系统周期性将CPU切换到不一样任务,分时间片轮番
3、运行每一个进程,而每一个进程都像是连续运行。每一个进程占有自己内存空间。第3页线程线程v线程:比进程更小执行单位,一个进程在其执行过线程:比进程更小执行单位,一个进程在其执行过程中能够产生多个线程,形成多条执行线索,每条程中能够产生多个线程,形成多条执行线索,每条线索即每个线程也有它本身产生、存在和消亡过程,线索即每个线程也有它本身产生、存在和消亡过程,也是一个动态过程。也是一个动态过程。v日常生活中程序、进程和线程:日常生活中程序、进程和线程:n程序:每学期课程表n进程:每学期教学活动n线程:每门课教学过程v一个程序运行后最少有一个进程,一个进程里能一个程序运行后最少有一个进程,一个进程里能
4、够包含多个线程,但最少要包含一个线程。够包含多个线程,但最少要包含一个线程。第4页单线程单线程v早期在计算机上开发程序大多是单线程,就是一早期在计算机上开发程序大多是单线程,就是一个程序只有一条从头到尾执行线索。个程序只有一条从头到尾执行线索。v我们之前编写程序都是我们之前编写程序都是单线程单线程程序,每个程序都程序,每个程序都有一个入口、一个出口以及一个次序执行序列,有一个入口、一个出口以及一个次序执行序列,在程序执行过程中任何指定时刻,都只有一个单在程序执行过程中任何指定时刻,都只有一个单独执行点。独执行点。第5页多线程多线程v多线程是一个进程中多段代码同时多线程是一个进程中多段代码同时并
5、发并发执行,是指程序中包含多条执行路径。执行,是指程序中包含多条执行路径。在一个程序中同时运行多个不一样线程来执行不一样任务,即允许单个程序在一个程序中同时运行多个不一样线程来执行不一样任务,即允许单个程序创建多个并行执行任务来完成各自任务。采取多线程,一个进程若干任务就创建多个并行执行任务来完成各自任务。采取多线程,一个进程若干任务就能够细分为多个部分由多线程来处理,这么能够增强整个程序吞吐量,加紧能够细分为多个部分由多线程来处理,这么能够增强整个程序吞吐量,加紧反应时间。比如:反应时间。比如:n浏览器程序就是一个多线程例子,当下载一个应用程序或图片时,能够同时进行其它任务,比如播放动画或声
6、音应用程序、打印一些内容、进行排序或者其它工作。n聊天室(多人同时聊天)v 在现实生活中,很多过程都含有多条线索同时动作特征,比如,我们能够一在现实生活中,很多过程都含有多条线索同时动作特征,比如,我们能够一边走路,一边接电话,两件事并行。假如不允许这么做,我们会感觉极难受。边走路,一边接电话,两件事并行。假如不允许这么做,我们会感觉极难受。第6页单线程程序多线程程序一个线程两个线程多线程多线程多线程和传统单线程在程序设计上最大区分在于,因为各个线程控制流彼此独立,使得各个线程之间代码是乱序执行。第7页l程序、进程、线程程序、进程、线程l多任务、多进程、多线程多任务、多进程、多线程lJava对
7、多线程支持、对多线程支持、Java根本程根本程lJava中创建线程方法中创建线程方法l线程休眠过程线程休眠过程l线程生命周期线程生命周期l线程调度和优先级线程调度和优先级内 容 提 要 第8页多任务、多进程、多线程多任务、多进程、多线程v多线程和多任务是两个现有联络又有区分概念:多线程和多任务是两个现有联络又有区分概念:n多任务是针对操作系统而言,代表着操作系统能够同时运行多个应用程序(多进程),比如我们能够利用计算机边听音乐,边浏览网页,或者从网络上下载东西,等等。以前古老DOS操作系统(V 6.22)是单任务,还没有线程概念,系统在每次只能做一件事情。比如你在copy东西时候不能renam
8、e文件名。为了提升系统利用效率,采取批处理来批量执行任务。n现在操作系统都是多任务操作系统,每个运行任务就是操作系统所做一件事情,比如你在听歌同时还在用MSN和挚友聊天。听歌和聊天就是两个任务,这个两个任务是“同时”进行。一个任务普通对应一个进程,也可能包含好几个进程。比如运行MSN就对应一个MSN进程,假如你用是windows系统,你就能够在任务管理器中看到操作系统正在运行进程信息。第9页多任务、多进程、多线程多任务、多进程、多线程v多线程是针对一个程序而言,代表着一个程序内部能够同多线程是针对一个程序而言,代表着一个程序内部能够同时执行线程个数,而每个线程能够完成不一样任务。时执行线程个数
9、,而每个线程能够完成不一样任务。v普通来说,当运行一个应用程序时候,就开启了一个进程,普通来说,当运行一个应用程序时候,就开启了一个进程,当然有些会开启多个进程。开启进程时候,操作系统会为当然有些会开启多个进程。开启进程时候,操作系统会为进程分配资源,其中最主要资源是内存空间,因为程序是进程分配资源,其中最主要资源是内存空间,因为程序是在内存中运行。在进程中,有些程序流程块是能够乱序执在内存中运行。在进程中,有些程序流程块是能够乱序执行,而且这个代码块能够同时被屡次执行。实际上,这么行,而且这个代码块能够同时被屡次执行。实际上,这么代码块就是线程体。线程是进程中乱序执行代码流程。当代码块就是线
10、程体。线程是进程中乱序执行代码流程。当多个线程同时运行时候,这么执行模式成为并发执行。多个线程同时运行时候,这么执行模式成为并发执行。v多线程目标是为了最大程度利用多线程目标是为了最大程度利用CPUCPU资源。资源。第10页多任务、多进程、多线程多任务、多进程、多线程v对于一个进程中多个线程来说,多个线程共享进对于一个进程中多个线程来说,多个线程共享进程内存块,当有新线程产生时候,操作系统不分程内存块,当有新线程产生时候,操作系统不分配新内存,而是让新线程共享原有进程块内存。配新内存,而是让新线程共享原有进程块内存。所以,线程间通信很轻易,速度也很快。不一样所以,线程间通信很轻易,速度也很快。
11、不一样进程因为处于不一样内存块,所以进程之间通信进程因为处于不一样内存块,所以进程之间通信相对困难。相对困难。v实际上,操作系统多进程实现了多任务并发执行,实际上,操作系统多进程实现了多任务并发执行,程序多线程实现了进程并发执行。多任务、多进程序多线程实现了进程并发执行。多任务、多进程、多线程前提都是要求操作系统提供多任务、程、多线程前提都是要求操作系统提供多任务、多进程、多线程支持。多进程、多线程支持。第11页多任务、多进程、多线程多任务、多进程、多线程v归纳起来,操作系统能够同时执行多个任务,每归纳起来,操作系统能够同时执行多个任务,每个任务就是进程,进程能够同时执行多个任务,个任务就是进
12、程,进程能够同时执行多个任务,每个任务就是线程。每个任务就是线程。第12页l程序、进程、线程程序、进程、线程l多任务、多进程、多线程多任务、多进程、多线程lJava对多线程支持、对多线程支持、Java根本程根本程lJava中创建线程方法中创建线程方法l线程休眠过程线程休眠过程l线程生命周期线程生命周期l线程调度和优先级线程调度和优先级内 容 提 要 第13页Java对多线程支持对多线程支持v很多程序语言都是利用外部线程软件包来实现多线程。如很多程序语言都是利用外部线程软件包来实现多线程。如C C语言。语言。vJavaJava是是第一个第一个支持内置线程操作主流编程语言。支持内置线程操作主流编程
13、语言。JavaJava语言一大特征就语言一大特征就是内置对多线程支持。多线程指同时存在几个执行体,按几条不一样是内置对多线程支持。多线程指同时存在几个执行体,按几条不一样执行线索共同工作情况,它使得编程人员能够很方便地开发出含有多执行线索共同工作情况,它使得编程人员能够很方便地开发出含有多线程功效、能同时处理多个任务功效强大应用程序。线程功效、能同时处理多个任务功效强大应用程序。v即使执行线程给人一个几个事件同时发生感觉,但这只是一个错觉,即使执行线程给人一个几个事件同时发生感觉,但这只是一个错觉,因为我计算机在任何给定时刻只能执行那些线程中一个,为了建立这因为我计算机在任何给定时刻只能执行那
14、些线程中一个,为了建立这些线程正在同时执行感觉,些线程正在同时执行感觉,javajava快速地把控制从一个线程切换到另外快速地把控制从一个线程切换到另外一个线程多个线程执行是并发,也是一个逻辑上一个线程多个线程执行是并发,也是一个逻辑上“同时同时”,而不是物,而不是物理上理上“同时同时”。假如系统只有一个。假如系统只有一个CPUCPU,那么真正,那么真正“同时同时”是不可能,是不可能,不过因为不过因为CPUCPU速度非常快,用户感觉不到其中区分,我们也没必要去速度非常快,用户感觉不到其中区分,我们也没必要去关心它,只需要构想各个线程是同时执行即可。假如系统有多个关心它,只需要构想各个线程是同时
15、执行即可。假如系统有多个CPUCPU,能够实现真正,能够实现真正“同时同时”执行。执行。v在应用程序中使用多线程在应用程序中使用多线程不会不会增加增加CPUCPU数据处理能力。数据处理能力。第14页Java根本程根本程v普通常见普通常见JavaJava应用程序都是单线程。比如,用应用程序都是单线程。比如,用javajava命令运命令运行一个最简单行一个最简单HelloWorldHelloWorldJavaJava应用程序时,就开启了一个应用程序时,就开启了一个JVMJVM进程,进程,JVMJVM找到程序程序入口点找到程序程序入口点main()main(),然后运行,然后运行mainmain()
16、()方法,这么就产生了一个线程,这个线程称之为方法,这么就产生了一个线程,这个线程称之为“根本根本程程”。v当当JVMJVM加载代码,发觉加载代码,发觉mainmain方法之后,就会开启一个线程,方法之后,就会开启一个线程,这个线程称作这个线程称作“根本程根本程”,该线程负责执行,该线程负责执行mainmain方法。假方法。假如如mainmain中没有创建其它线程,那么当中没有创建其它线程,那么当mainmain方法执行完最终方法执行完最终一条语句,一条语句,JVMJVM就会结束我们就会结束我们javajava应用程序。假如应用程序。假如mainmain中中又创建了其它线程,那么又创建了其它线
17、程,那么JVMJVM就要在根本程和其它线程之就要在根本程和其它线程之间轮番切换,确保每个线程都有机会使用间轮番切换,确保每个线程都有机会使用CPUCPU资源,资源,mainmain方法即使执行完最终语句,方法即使执行完最终语句,JVMJVM也不会结束我们程序,也不会结束我们程序,JVMJVM一直等到程序中全部线程都结束之后,才结束我们一直等到程序中全部线程都结束之后,才结束我们javajava应应用程序用程序第15页Java根本程根本程第16页多线程优点多线程优点 v使用多线程进行程序设计含有以下优点:使用多线程进行程序设计含有以下优点:1)多多线线程程编编程程简简单单,效效率率高高(能能直直
18、接接共共享享数数据据和和资资源源,多进程不能)多进程不能)2)适合于开发服务程序(如适合于开发服务程序(如WebWeb服务,聊天服务等)服务,聊天服务等)3)适适合合于于开开发发有有各各种种交交互互接接口口程程序序(如如聊聊天天程程序序客客户户端端,网络下载工具)网络下载工具)4)减减轻轻编编写写交交互互频频繁繁、包包括括面面多多程程序序困困难难(如如监监听听网网络络端端口)口)5)程程序序吞吞吐吐量量会会得得到到改改进进(同同时时监监听听各各种种设设备备,如如网网络络端端口、串口、并口以及其它外设)口、串口、并口以及其它外设)6)有有多多个个处处理理器器系系统统,能能够够并并发发运运行行不不
19、一一样样线线程程(不不然然,任何时刻只有一个线程在运行)任何时刻只有一个线程在运行)第17页l程序、进程、线程程序、进程、线程l多任务、多进程、多线程多任务、多进程、多线程lJava对多线程支持、对多线程支持、Java根本程根本程lJava中创建线程方法中创建线程方法l线程休眠过程线程休眠过程l线程生命周期线程生命周期l线程调度和优先级线程调度和优先级内 容 提 要 第18页Java中创建线程方法中创建线程方法vJavaJava虚拟机允许应用程序并发地运行多个执行线程。虚拟机允许应用程序并发地运行多个执行线程。JavaJava语言提供了多线程编程扩展点,并给出了功效强大线程控语言提供了多线程编
20、程扩展点,并给出了功效强大线程控制制APIAPI。vJavaJava线程是经过线程是经过javajava软件包软件包java.langjava.lang中定义中定义ThreadThread类类来来实现。实现。vJavaJava中有两种方法创建线程:中有两种方法创建线程:n 继承Thread类。n 实现实现RunnableRunnable接口。接口。v不论使用哪种方法,都需要用到不论使用哪种方法,都需要用到JavaJava基础类库中基础类库中ThreadThread类类及其方法。及其方法。v在在JavaJava语言中,线程也是一个对象,但并非任何对象都能语言中,线程也是一个对象,但并非任何对象都
21、能够成为线程,只有实现够成为线程,只有实现RunnableRunnable接口或继承了接口或继承了ThreadThread类对类对象才能成为线程。象才能成为线程。第19页 Thread类类 vpublicclassThreadextendsObjectimplementsRunnablenThread类是一个详细类,即不是抽象类,该类封装了线程行为。要创建一个线程,程序员必须创建一个Thread类子类。nThread类提供了大量方法来方便控制各个线程。第20页Thread类结构方法类结构方法(1)public Thread():创建一个系统线程类对象。线程默认名是Thread-n,n是从0开始
22、递增整数。(2)public Thread(String name):在第一个结构方法基础上,为所创建线程对象指定一个字符串名称供以后使用。(3)public Thread(Runnable target):该结构方法包含 了Runnable类型参数,它是实现Runnable接口类实例对象,基于该结构方法创建线程对象,将线程业务逻辑交由参数所传递Runnable对象去实现。ntargettarget是实现了是实现了RunnableRunnable接口类接口类targettarget对象。对象。n线程默认名是线程默认名是Thread-nThread-n,n n是从是从0 0开始递增整数。开始递增
23、整数。第21页Thread类结构方法类结构方法(4)public Thread(Runnable target,String name):实现前两个结构方法功效。(5)public Thread(ThreadGroup group,Runnable target):生成一个指定线程组和目标对象线程。(6)public Thread(ThreadGroup group,String name):生成一个指定线程组和名字线程。v利用结构方法创建新线程对象之后,这个对象中相关数据被初始化,从而进入线程生命周期第一个状态新建状态。第22页Thread类主要组员方法类主要组员方法 方法v 功效功效Cur
24、rentThread()CurrentThread()v返回当前运行返回当前运行ThreadThread对象对象start()start()v开启线程开启线程run()run()v由调度程序调用,当由调度程序调用,当run()run()方法返回时,方法返回时,该该v线程停顿线程停顿stop()stop()v使调用它线程马上停顿执行使调用它线程马上停顿执行sleep(long n)sleep(long n)v使线程睡眠使线程睡眠n n毫秒,毫秒,n n毫秒后,线程能够再毫秒后,线程能够再v次运行次运行suspend()suspend()使线程挂起,暂停运行Not Runnableresume()
25、resume()v恢复挂起线程,使处于可运行状态恢复挂起线程,使处于可运行状态vRunnableRunnableyield()yield()将CPU控制权主动移交到下一个可运行线程第23页Thread类主要方法类主要方法(续续)setName(String)setName(String)赋予线程一个名字getName()getName()v取得由取得由setName()setName()方法设置线程方法设置线程v名字字符串名字字符串getPriority()getPriority()返回线程优先级setPriority(int)setPriority(int)设置线程优先级join()join
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学 多线程 专业知识 讲座 公共课 一等奖 全国 获奖 课件
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。