java面向对象程序设计第2版第15章-java多线程机制.ppt
《java面向对象程序设计第2版第15章-java多线程机制.ppt》由会员分享,可在线阅读,更多相关《java面向对象程序设计第2版第15章-java多线程机制.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/1/28Java面向对象程序设计面向对象程序设计第第2 2版版第第15章章配合第2版 例子源代码一起使用例子源代码一起使用Power point 制作:耿祥义 张跃平Java多线程机制 2023/1/28主要内容主要内容Java中的线程中的线程Thread子类创建线程子类创建线程使用使用Runnable接口接口线程的常用方法线程的常用方法GUI线程线程线程同步线程同步在同步方法中使用在同步方法中使用wait()、notify 和和notifyAll()方法方法计时器线程计时器线程线程联合线程联合守护线程守护线程难点难点线程同步线程同步导读导读2023/1/28多多线线程程是是指指同同
2、时时存存在在几几个个执执行行体体,按按几几条条不不同同的的执执行行线线索索共共同同工工作作的的情情况况,它它使使得得编编程程人人员员可可以以很很方方便便地地开开发发出出具具有有多多线线程程功功能能、能能同同时时处处理理多多个个任任务务的的功功能能强强大的应用程序。大的应用程序。Java虚虚拟拟机机(JVM)负负责责管管理理这这些些线线程程,这这些些线线程程将将被被轮轮流流执执行行,使使得得每每个个线线程都有机会使用程都有机会使用CPU资源。资源。概述概述2023/1/2815.1 JavaJava中的线程中的线程 15.1.1 程序、进程与线程程序、进程与线程 程程序序是是一一段段静静态态的的
3、代代码码,它是应用软件执行的蓝本。它是应用软件执行的蓝本。进进程程是是程程序序的的一一次次动动态态执执行行过过程程,它它对对应应了了从从代代码码加加载载、执执行行至至执执行行完完毕毕的的一一个个完完整整过过程程,这这个个过过程程也也是是进进程程本本身身从从产产生生、发发展展至至消消亡亡的过程。的过程。线线程程是是比比进进程程更更小小的的执执行行单位。单位。2023/1/2815.1.2 线程的状态与生命周期线程的状态与生命周期 建建的的线线程程在在它它的的一一个个完完整整的的生生命命周周期期中中通通常常要要经经历历如如下下的的四四种种状态:状态:1新新建建:当当一一个个Thread类类或或其其
4、子子类类的的对对象象被被声声明明并并创创建建时时,新新生生的的线线程程对对象象处于新建状态。处于新建状态。2运运行行:线线程程必必须须调调用用startstart()方方法法(从从父父类类继继承承的的方方法法)通通知知JVMJVM,这这样样JVMJVM就就会会知知道道又又有有一一个个新新一一个个线线程程排排队队等等候候切切换换了了。一一旦旦轮轮到到它它来来享享用用CPUCPU资资源时,此线程的就可以脱离创建它的主线程独立开始自己的生命周期了。源时,此线程的就可以脱离创建它的主线程独立开始自己的生命周期了。3中断中断:有有4 4种原因的中断:种原因的中断:JVMJVM将将CPUCPU资资源源从从
5、当当前前线线程程切切换换给给其其他他线线程程,使使本本线线程程让让出出CPUCPU的的使使用用权权处于中断状态。处于中断状态。线线程程使使用用CPUCPU资资源源期期间间,执执行行了了sleep(int sleep(int millsecond)millsecond)方方法法,使使当当前前线线程进入休眠状。程进入休眠状。线程使用线程使用CPUCPU资源期间,执行了资源期间,执行了wait()wait()方法。方法。线程使用线程使用CPUCPU资源期间,执行某个操作进入阻塞状态。资源期间,执行某个操作进入阻塞状态。4死亡死亡:处于死亡状态的线程不具有继续运行的能力。线程释放了实体。处于死亡状态的
6、线程不具有继续运行的能力。线程释放了实体。例题例题15-12023/1/2815.1.3 线程调度与优先级线程调度与优先级 处处于于就就绪绪状状态态的的线线程程首首先先进进入入就就绪绪队队列列排排队队等等候候CPU资资源源,同同一一时时刻刻在在就就绪绪队队列列中中的的线线程程可可能能有有多多个个。Java虚虚拟拟机机(JVM)中中的的线线程程调调度度器器负负责责管管理理线线程程,调调度度器器把把线线程程的的优优先先级级分分为为10个个级别,分别用级别,分别用Thread类中的类常量表示。类中的类常量表示。Java调调度度器器的的任任务务是是使使高高优优先先级级的的线线程程能能始始终终运运行行,
7、一一旦旦时时间间片片有有空空闲闲,则则使使具具有有同同等等优优先先级级的的线线程程以以轮轮流流的的方方式式顺顺序序使使用用时时间片。间片。2023/1/2815.2 ThreadThread的子类创建线程的子类创建线程 在编写Thread类的子类时,需要重写父类的run()方法,其目的是规定线程的具体操作,否则线程就什么也不做,因为父类的run()方法中没有任何操作语句。例题例题15-22023/1/2815.3使用使用RunnableRunnable接口接口 RunnableRunnable接口与目标对象接口与目标对象 创创建建线线程程的的另另一一个个途途径径就就是是用用ThreadThre
8、ad类类直直接接创创建建线线程程对对象象。使使用用ThreadThread创建线程对象时,通常使用的构造方法是:创建线程对象时,通常使用的构造方法是:ThreadThread(Runnable targetRunnable target);该构造方法中的参数是一个该构造方法中的参数是一个RunnableRunnable类型的接口类型的接口。在在创创建建线线程程对对象象时时必必须须向向构构造造方方法法的的参参数数传传递递一一个个实实现现RunnableRunnable接接口口类类的的实实例例,该该实实例例对对象象称称作作所所创创线线程程的的目目标标对对象象,当当线线程程调调用用start()st
9、art()方方法法后后,一一旦旦轮轮到到它它来来享享用用CPUCPU资资源源,目目标标对对象就会自动调用接口中的象就会自动调用接口中的run()run()方法(接口回调)。方法(接口回调)。例题例题15-32023/1/2815.3.2 关于关于runrun方法中的局部变量方法中的局部变量 对对于于具具有有相相同同目目标标对对象象的的线线程程,当当其其中中一一个个线线程程享享用用CPU资资源源时时,目目标标对对象象自自动动调调用用接接口口中中的的run方方法法,这这时时,run方方法法中中的的局局部部变变量量被被分分配配内内存存空空间间,当当轮轮到到另另一一个个线线程程享享用用CPU资资源源时
10、时,目目标标对对象象会会再再次次调调用用接接口口中中的的run方方法法,那那么么,run()方方法法中中的的局局部部变变量量会会再再次次分分配内存空间。配内存空间。例题例题15-42023/1/2815.3.3 在线程中启动其它线程在线程中启动其它线程 线线程程通通过过调调用用start()start()方方法法将将启启动动该该线线程程,使使之之从从新新建建状状态态进进入入就就绪绪队队列列排排队队,一一旦旦轮轮到到它它来来享享用用CPUCPU资资源源时时,就就可可以以脱脱离离创创建建它它的的主主线线程程独独立立开开始始自自己己的的生生命命周周期了。期了。可以在任何一个线程中启动另外一个线程。可
11、以在任何一个线程中启动另外一个线程。例题例题15-52023/1/2815.4 线程的常用方法线程的常用方法 1start():线程调用该方法将启动线程,使之从新建状态进入就绪线程调用该方法将启动线程,使之从新建状态进入就绪队列排队,一旦轮到它来享用队列排队,一旦轮到它来享用CPUCPU资源时,就可以脱离创建它的线程独立开资源时,就可以脱离创建它的线程独立开始自己的生命周期了。始自己的生命周期了。2run():Thread类类的的run()方方法法与与Runnable接接口口中中的的run()方方法法的的功功能能和和作作用用相相同同,都都用用来来定定义义线线程程对对象象被被调调度度之之后后所所
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 程序设计 15 多线程 机制
限制150内