- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第12章多线程
本章知识重点 本章知识难点 现实中的多线程 线程概览 线程概览[续] 线程的生命周期 线程的生命周期【续】 线程的生命周期【续】 Java多线程的实现方式 线程的控制 线程的优先级 线程的同步机制 在处理线程同步时,我们在共享资源中用关键字synchronized来进行修饰。在共享内存变量的方法前加synchronized修饰符。synchronized 关键字包括两种用法:synchronized()方法和 synchronized 块。 经典练习题 再 见 立体化教材计算机系列 —《Java程序设计》 * 第12章 多线程 目 录 本章知识重点 本章知识难点 线程的控制 Java多线程的实现方式 经典练习题 线程的生命周期 多线程概念介绍 3 1 3 2 线程的生命周期 3 3 多线程的实现方式 3 4 线程的控制 线程与进程 3 3 线程类和接口 3 4 3 1 3 2 线程和进程的区别 线程状态的理解 线程的优先级和同步机制 现实生活中,我们可以利用计算机边听音乐, 边浏览网页,或者从网络上下载东西,等等。 这些都是利用了操作系统的多线程并发机制实现 的,Java语言就支持多线程。 多线程可以包含多个程序段,他们按照自己的执行 路线并发工作,独立完成各自的功能,互 不干扰。 线程的概述 线程是程序中能顺序执行的一个序列。每个线程对应程序的一条 执行路线,多个线程构成同一程序的多条执行路线。 Java支持多线程编程,多线程程序包含两个或两个以上并发运行的线程。 线程需要操作系统的支持,不是所有类型的计算机都支持多线程应用 程序。 在应用程序中使用多线程不会增加 CPU 的数据处理能力。 线程与进程的区别与联系 进程 1. 是一个程序在其自身的地址空间中的一次执行活动。 2. 进程是资源申请、调度和独立运行的单位,它使用系统中的运行资源。 线程 1. 是进程中的一个单一的连续控制流程。 3. 每个线程对应程序中的一条执行路线。 2. 一个进程可以拥有多个线程。 4. 和进程一样拥有独立的执行控制,由操作系统负责调度 区别与联系 线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,每个进程拥有一段专用的 内存区域。利用这些共享单元可以实现数据交换、通信和一系列的同步操作。 Java线程的生命周期中一共有五个状态:①新建状态②就绪状态③运行状态④阻塞状态和⑤终止状态。 新建状态 就绪状态 运行状态 阻塞状态 终止状态 下图是五个状态的状态转换示意图: 新建状态即创建一个新的线程对象(new Thread)。当一个线程处于创建状态时,系统不为它分配资 源,通过调用start方法进入就绪状态。 新建线程的代码示例: Thread myThread=new Thread( ); 3 1 新建状态 就绪状态 Java通过start方法启动处于新建状态的线程对象,使其进入就绪状态。处于就绪状态的线程已经具备 了运行条件,将进入线程队列等待系统为其分配CPU,一旦获得了CPU,线程就进入运行状态,并调 用自己的run方法。 就绪状态的代码示例: myThread. start( ); 3 2 处于就绪状态的线程被调度并获得CUP的处理后进入了运行状态,每一个Thread类及其子类的对象都有 一个run()方法,当线程对象被调度执行的时候,它将自动调用本对象的run()方法。 阻塞状态 3 3 运行状态 处于就绪状态的线程被调度并获得CUP的处理后进入了运行状态,每一个Thread类及其子类的对象都有 一个run()方法,当线程对象被调度执行的时候,它将自动调用本对象的run()方法。 注意:对线程的操作应该写到run()方法中。 3 4 3 5 终止状态 终止状态是线程生命周期的最后一个阶段。因线程完成全部工作,正常结束运行。或线程被强制性的终止。 3 1 继承Thread类 Java.lang包中的Thread类,是一个专门用来创建线程的类,该类中提供了 线程所用到的属性和方法。我们通过创建该类的子类来实现多线程。 3 2 实现Runnable接口 通过Runable接口实现多线程的方法: 设计一个实现Runable接口的类,然后根据工作需要重新设计线程的run方法; 建立该类的对象,以此对象为参数建立Thread类的对象; 调用Thread类对象的start方法启动线程,将执行权转交到run方法。 3 1 线程的优先级 3 2 线程的同步机制 在Java应用程序中,为了控制线程的运行,Java定义了线程调度器来监控系统中处于就绪状态的所有线程。 一个线程的优先级设置遵从以下原则: 线程创建时
文档评论(0)