版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章第五章 Java中的多线程中的多线程 教授:郭磊【本章导读【本章导读】l多线程是Java语言的又一重要特征。线程本身并不是操作系统的一个重要概念,大多数程序设计语言并不提供这种并发机制。Java将操作系统的线程概念纳入程序设计语言中,编程人员可利用Java提供的多线程机制,使系统同时运行多个执行体,从而加快程序的响应时间,提高计算机资源的使用效率。l本章介绍Java的多线程机制,包括线程的概念,线程的创建、线程中的常用方法、线程的同步、守护线程等内容。【本章要点【本章要点】线程的概念 线程的创建线程中的常用方法线程的同步守护线程5.1 线程的概念l在介绍Java的线程使用之前,我们要先明
2、确线程的定义。在Windows中,我们经常可以一边听音乐,一边和别人在进行QQ聊天,同时,杀毒软件和防火墙可能也在同时运行,这个在同一时间内能进行多中CPU的资源调配的行为就叫做线程。5.1 线程是怎样工作的呢? l整个操作系统是由多个进程组成的(包括操作系统进程),而一个进程又由多个线程组成(一般处理单任务的进程只有一个线程);在整个操作系统中占用CPU期间,进程分配CPU的时间给每一个线程;进程占用整个内存空间的一部分,而线程占有其所属进程占用的内存空间的一部分;进程由代码、数据和运行环境组成,而线程也由这三者组成。5.1 线程与进程的区别l进程与线程不同之处在于,每个进程都是独立的它仅在
3、分配给它的内存空间中运行,有自己专属的代码和数据,不能访问其他进程的数据(就算另一个进程来自于同一个程序),进程间的通信必须通过操作系统传达,进程有权不接收其他进程(操作系统关键进程除外)发出的消息;而进程允许代码和数据的共享,一个线程可以使用其他线程的代码,也可以访问其他线程的数据(这可能带来数据冲突的问题,也是本章的主要内容之一),使得线程间的通信比进程间的通信更为方便快捷。5.2 线程的创建l5.2.1 使用使用Thread类的子类创建类的子类创建一个完整的线程的使用过程分为四个步骤l1、创建。l顾名思义,当一个线程对象被声明并创建时,他就处于新键的状态。此时,它已经有了相应的内存空间和
4、其他的资源。l2、运行。l当线程被创建之后,系统并没有给予他生命,他不会自动运行,必须调用start()方法来进行激活,使其进入CPU的运行等待队列中。(在线程没有结束run()方法之前,不要让线程再调用start()方法,否则将发生IllegalThreadStateException错误)。 5.2 线程的创建l3、中断。l有4种方法可以中断线程。CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态线程使用CPU资源期间,执行了sleep()方法,使当前线程进入休眠状态。sleep()方法是Thread类中的一个方法,线程一旦执行了sleep()方法,就立即让出CPU
5、的使用权,使当前线程处于中断的状态,经过sleep()方法中规定的时间,该现成就重新进入线程队列中等待CPU资源,以便从中断处继续运行。线程使用CPU资源期间,执行了wait()方法,使线程进入等待状态,不会主动的进入线程队列中等待CPU资源,当其他的线程调用notify()方法通知,才能使的等待状态中的线程重新回到线程队列中,等待CPU分配资源。异常错误,比如是读/写操作引起的阻塞。当引发类似问题时,线程不能进入使用队列,当阻塞消除时,线程才重新回到等待队列中。l4、死亡。l简单的说就是结束了run()方法,无论是线程自己执行完毕还是说被强制的结束了run()方法。线程就释放了内存。5.2
6、线程的创建l5.2.2 使用使用Runable接口创建接口创建l在介绍Runable接口之前,需要先介绍一下他和Thread类的区别:Thread类可以在子类中增加新的成员变量,使线程具有某种属性,也可以在子类中新增加方法,使线程具有某种功能。但是Java不支持多继承,Thread类的子类不能再继承其他的类,因此,在某些需要的情况下,只能采用实现Runnable的方式。5.3 线程中的常用方法1、run方法方法run 方法是运行线程时需要执行的代码。我们要用代码也就是 run() 方法来描述一个处理过程,而不是创建一个表示这个处理过程的对象。 2、start方法方法线程调用该方法以后将启动线程
7、,从此开始从新建状态进入到等待队列,当CPU把资源分配到他的时候,他就开始自己的生命周期了。3、 sleep方法方法sleep()方法指的是一种让线程让出CPU资源的方法,他的执行可以暂时停止CPU对此线程的资源分配,把这些资源让给别的线程进行使用。sleep()方法执行时,线程进入睡眠状态,当sleep()所规定的时间结束之后,线程又重新进入等待队列中。5.3 线程中的常用方法4、isAlive方法方法有时候线程可以处于一个未知的状态。isAlive()方法用来确定一个线程是否还活着。活着的线程不一定正在运行,未在活着的线程也不一定就是死亡的线程,对于一个处于激活状态的线程,他的返回值是tr
8、ue。5 、currentThread方法方法currentThread()方法是Thread类中的一个类方法,他可以使用类名进行调用,该方法返回的是当前正在使用CPU资源的线程。6、 interrupt方法方法关于interrupt方法,他总是和sleep方法配合使用,在一个线程中,总是sleep方法是的这个线程进入睡眠状态,之后在某个时间中,在用interrupt方法将其唤醒。5.4 线程同步l这种多个线程试图同时使用相同且有限的资源的情况,是很有可能发生的,若不是提供某种机制避免这种情况的出现,后果将可能是非常严重且不可预料的,如造成某种线程数据的不一致,使某些线程陷入无限循环永远无法退
9、出,破坏某些文件或者数据库中的重要数据。5.4 线程同步的处理方法线程同步的处理方法l在处理同步线程的时候,我们经常使用wait()、notifyAll()和notify()方法来实现同步线程之间的控制,这3个方法都是Object类中的final方法,被所有的类所继承,而且不能被重写。当一个线程使用的同步方法中使用的某个变量需要别的线程来修改的时候,我们就可以用wait()方法。它可以中断线程的执行,使他处于等待状态,让CPU让出使用资源,当变量被处理之后,在使用notify()来唤醒线程,继续执行这个同步线程。5.5 守护线程 l线程分为用户线程和守护线程两种。一般一个线程都是非守护的,非守
10、护的线程也被称为拥护(user)线程。l守护线程的特点是:守护线程常常是一个死循环,常常用来监视其他线程的运行,并且提供一些通用性的服务。但是一旦所有的用户线程都运行完毕,那么,守护线程也将被Java所结束。l一个线程在被调用前要先设置自己是否是守护线程。设置的方法是:调用setDaemon(boolean)方法进行设定,由于一般的线程都默认为非守护的所以在使用的时候,setDaemon()方法都设定为true。而由main()方法创建的线程都是非守护的线程。本章小结本章小结l本章介绍Java中的多线程,其中包括多线程的概念、线程的创建、线程同步、守护线程等多线程的相关知识。通过本章的学习,读者需要掌握多线程的基本知识,能够在多线程的应用领域合理利用本章的知识,使程序能够更好地利用系统资源,同时完成较为复杂的一系列功能。习 题l一、简答题1Java的线程是如何实现的?2线程的生命周期有哪几
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025海南海洋招聘4人笔试历年参考题库附带答案详解
- 2025江苏苏州市港航投资发展集团有限公司招聘12人笔试历年参考题库附带答案详解
- 2025吉林能建绿色氢氨新能源(松原)有限公司招聘69人笔试历年参考题库附带答案详解
- 2026年夹江县从基层服务项目人员中考核招聘事业单位工作人员的备考题库(2人)含答案详解
- 中心供氧汇流排改造配套工程竣工验收报告
- 2026重庆师范大学考核招聘68人备考题库(第一批)及一套参考答案详解
- 2026湖南郴州市苏仙区事业单位公开招聘(引进) 高层次人才20人备考题库及完整答案详解一套
- 2026新疆第六师五家渠市上半年高层次人才招聘38人备考题库及一套参考答案详解
- 维护保养环节方案
- 2026河北体育学院选聘第一批工作人员12名备考题库及1套参考答案详解
- 西门子S7-1200PLC从入门到精通
- 咨询评估任务专项档案制度
- AI赋能下北师大版小学数学四年级上册《确定位置》教学设计反思
- 新疆地方可爱的中国课件
- 2025新疆机场(集团)有限责任公司喀什管理分公司第一季度招笔试备考试题附答案
- 工厂化学品使用安全培训
- 雨课堂学堂云在线《计算思维与人工智能基础(宁夏大学 )》单元测试考核答案
- 医疗机构临床实验室管理办法
- 电机更换施工方案
- 员工职业健康体检表模板
- 维吾尔医常见病诊疗指南
评论
0/150
提交评论