资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第12章 多线程立体化教材计算机系列 Java程序设计 2目目 录录 本章知识重点本章知识重点本章知识难点本章知识难点线程的控制线程的控制JavaJava多线程的实现方式多线程的实现方式经典练习题经典练习题线程的生命周期线程的生命周期多线程概念介绍多线程概念介绍立体化教材计算机系列 Java程序设计 3本章知识重点3132线程的生命周期33多线程的实现方式34线程的控制线程与进程立体化教材计算机系列 Java程序设计 4本章知识难点33线程类和接口343132线程和进程的区别线程状态的理解线程的优先级和同步机制立体化教材计算机系列 Java程序设计 5现实中的多线程现实生活中,我们可以利用计算机边听音乐, 边浏览网页,或者从网络上下载东西,等等。这些都是利用了操作系统的多线程并发机制实现 的,Java语言就支持多线程。多线程可以包含多个程序段,他们按照自己的执行 路线并发工作,独立完成各自的功能,互 不干扰。立体化教材计算机系列 Java程序设计 6线程概览线程的概述 线程是程序中能顺序执行的一个序列。每个线程对应程序的一条 执行路线,多个线程构成同一程序的多条执行路线。Java支持多线程编程,多线程程序包含两个或两个以上并发运行的线程。 线程需要操作系统的支持,不是所有类型的计算机都支持多线程应用 程序。 在应用程序中使用多线程不会增加 CPU 的数据处理能力。 立体化教材计算机系列 Java程序设计 7线程概览续线程与进程的区别与联系 进程 1. 是一个程序在其自身的地址空间中的一次执行活动。 2. 进程是资源申请、调度和独立运行的单位,它使用系统中的运行资源。 线程 1. 是进程中的一个单一的连续控制流程。 3. 每个线程对应程序中的一条执行路线。 2. 一个进程可以拥有多个线程。4. 和进程一样拥有独立的执行控制,由操作系统负责调度 区别与联系线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,每个进程拥有一段专用的 内存区域。利用这些共享单元可以实现数据交换、通信和一系列的同步操作。 立体化教材计算机系列 Java程序设计 8线程的生命周期Java线程的生命周期中一共有五个状态:新建状态就绪状态运行状态阻塞状态和终止状态。 新建状态就绪状态运行状态阻塞状态终止状态下图是五个状态的状态转换示意图: 立体化教材计算机系列 Java程序设计 9线程的生命周期【续】新建状态即创建一个新的线程对象(new Thread)。当一个线程处于创建状态时,系统不为它分配资 源,通过调用start方法进入就绪状态。 新建线程的代码示例: Thread myThread=new Thread( );31新建状态就绪状态Java通过start方法启动处于新建状态的线程对象,使其进入就绪状态。处于就绪状态的线程已经具备 了运行条件,将进入线程队列等待系统为其分配CPU,一旦获得了CPU,线程就进入运行状态,并调 用自己的run方法。 就绪状态的代码示例: myThread. start( );32立体化教材计算机系列 Java程序设计 10线程的生命周期【续】处于就绪状态的线程被调度并获得CUP的处理后进入了运行状态,每一个Thread类及其子类的对象都有 一个run()方法,当线程对象被调度执行的时候,它将自动调用本对象的run()方法。阻塞状态33运行状态处于就绪状态的线程被调度并获得CUP的处理后进入了运行状态,每一个Thread类及其子类的对象都有 一个run()方法,当线程对象被调度执行的时候,它将自动调用本对象的run()方法。 注意:对线程的操作应该写到run()方法中。 3435终止状态终止状态是线程生命周期的最后一个阶段。因线程完成全部工作,正常结束运行。或线程被强制性的终止。 立体化教材计算机系列 Java程序设计 11Java多线程的实现方式31继承Thread类 Java.lang包中的Thread类,是一个专门用来创建线程的类,该类中提供了 线程所用到的属性和方法。我们通过创建该类的子类来实现多线程。32实现Runnable接口 通过Runable接口实现多线程的方法: 设计一个实现Runable接口的类,然后根据工作需要重新设计线程的run 方法; 建立该类的对象,以此对象为参数建立Thread类的对象; 调用Thread类对象的start方法启动线程,将执行权转交到run方法。 立体化教材计算机系列 Java程序设计 12线程的控制 31线程的优先级32线程的同步机制立体化教材计算机系列 Java程序设计 13线程的优先级 在Java应用程序中,为了控制线程的运行,Java定 义了线程调度器来监控系统中处于就绪状态的所 有线程。一个线程的优先级设置遵从以下原则:线程创建时,子进程继承父进程的优先级线程创建后,可通过调用setPriority()方法改变优 先级。一般情况下,主线程具有普通优先级。新建的 线程默认为普通优先级 立体化教材计算机系列 Java程序设计 14yield()暂停当前线程 sleep()使线程进行睡眠 wait()是线程暂停,等待通知或自动苏醒 notify()通知线程苏醒 notifyAll()通知线程苏醒 interrupt()中断线程立体化教材计算机系列 Java程序设计 15线程的同步机制在处理线程同步时,我们在共享资源中用关键字synchronized来进行 修饰。在共享内存变量的方法前加synchronized修饰符。 synchronized 关键字包括两种用法:synchronized()方法和 synchronized 块。31synchronized()方法: 32通过在方法声明中加入 synchronized关键字来声明 synchronized()方法 。synchronized()方法控制对类成员变量的访问。 如: public synchronized void accessVal(int newVal);synchronized 块: 通过 synchronized关键字来声明synchronized 块。语法如下: synchronized(syncObject) /允许访问控制的代码 立体化教材计算机系列 Java程序设计 16经典练习题31什么是线程和进程?两者的区别是什么? 32Java实现多线程的方法有哪些?33线程的生命周期有哪几部分组成?各自的功 能是什么? 立体化教材计算机系列 Java程序设计 17再 见
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号