- 1、本文档共72页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 线程 (时间:3次课,6学时) 第6章 线程 教学提示:计算机世界要想真正地反映现实世界,必须解决事情的同步问题,即解决程序实现多线程的问题。 因此可编写有几条执行路径的程序,使得程序能够同时执行多个任务,借此实现多线程运行。Java语言的一大特点就是内置对多线程的支持。 本章主要介绍:Java中的线程作用机制 、线程的实现方法、线程的控制和线程的同步与死锁 。 第6章 线程 6.1 线程简介 6.2 线程的实现方法 6.3 线程的控制 6.4 Java的多线程实例 6.5 线程的同步与死锁 6.6 ThreadLocal问题 6.7 课后练习 6.1 线程简介 6.1.1 程序、进程和线程 6.1.2 线程的生命周期 6.1.3 线程的优先级及其调度6.1.4 线程组 6.1 线程简介 对于许多编程人员来说,线程并不是那么的陌生。但是在Java中,线程的作用机制又是如何工作的呢?本节将重点介绍Java中的线程作用机制。 6.1.1 程序、进程和线程 程序是由若干条语句组成的语句序列,是一段静态代码。 进程是程序的一次动态执行过程。 需要特别指出的是,进程不仅包括程序代码,还包括系统资源。即一个进程既包括其所要执行的指令,也包括执行指令所需的任何系统资源,如CPU、内存空间等。不同进程所占用的系统资源相对独立。 6.1.1 程序、进程和线程 线程又是一个抽象的概念,它包含了一个计算机执行传统程序时所做的每一件事情。线程是一种在CPU上调度的程序状态,它在某一瞬时看来只是计算过程的一个状态。一个进程中的所有线程共享该进程的状态,它们存储在相同的内存空间中,共享程序的代码和数据。所以当其中一个线程改变了进程的变量时,那么其他线程下次访的将是改变后的变量。 多线程是指同一个应用程序中有多个顺序流同时执行。在一个程序中可以同时运行多个不同的线程来执行不同的任务,各个线程并行地完成各自的任务。浏览器就是一个典型的多线程例子。 6.1.2 线程的生命周期 每个Java程序都有一个默认的主线程。对于应用程序,主线程是main()方法执行的路径。图6-1说明线程的生命周期及其状态转换。 6.1.2 线程的生命周期 图6-1 线程的状态转换 6.1.2 线程的生命周期 从图6-1中可以看出:一个线程从创建到消亡的整个生命周期中,总是处于下面5个状态中的某个状态。 1. 新建状态 通过new命令创建一个Thread类或其子类的线程对象时,该线程对象处于新建状态。创建一个新的线程对象可以用下面的语句实现: Thread thread=new Thread(); 该语句是最简单的创建线程的语句,但该语句创建的线程是一个空的线程对象,系统还未对这个线程分配任何资源。 6.1.2 线程的生命周期 2. 就绪状态 该状态又可称为可运行状态。处于新建状态的线程可通过调用start()方法启动该线程。Start()方法产生了线程运行需要的系统资源。启动后的线程将进入线程就绪队列排队等待CPU服务,此时线程已经具备了运行的条件,一旦它获得CPU等资源时就可以脱离创建它的主线程而独立运行。 6.1.2 线程的生命周期 3. 运行状态 当处于就绪状态的线程被调度并获得CPU资源时,使进入运行状态。每个线程对象都有一个重要的run()方法,run()方法定义了该线程的操作和功能。当线程对象被调度执行时,它将自动调用其run()方法并从第一条语句开始顺次执行。 6.1.2 线程的生命周期 4. 阻塞状态 又称不可运行状态。当发生下列情况之一时,线程就进入阻塞状态。 (1) 等待输入输出操作完成。 (2) 线程调用wait()方法等待一个条件变量。 (3) 调用了该线程的sleep()休眠方法。 (4) 调用了suspend()挂起方法。 6.1.2 线程的生命周期 5. 消亡状态 消亡状态又称死亡状态,当调用run()方法结束后,线程就进入消亡状态,这是线程的正常消亡。另外线程还可能被提前强制性消亡。不管何种情况,处于消亡状态的线程不具有继续运行的能力。 6.1.3 线程的优先级及其调度 线程被创建之后,每个Java线程的优先级都在Thread.MIN_PRIORITY(常量1)和Thread.MAX_PRIORITY(常量10)的范围之内。每个新建线程的默认优先级都为Thread.NORM_PRIORITY(常量5)。可以用方法int getPriority()来获得线程的优先级,同时也可以用方法 void setPriority(int p)在线程被创建后改变线程的优先级。 一个线程将始终保持运行状态,直到出现下列情况:由于I/O(或其他一些原因)而使该
您可能关注的文档
- (冀教版)二年级语文上册课件 送给奶奶的阳光 2.ppt
- 《Java 2面向对象程序设计基础》第5章:包、接口和异常.ppt
- 《Java 2面向对象程序设计基础》第7章:输入与输出.ppt
- 《Java_2面向对象程序设计基础》第2章:Java语言开发环境.ppt
- 基于粗糙集的Web日志挖掘研究.pdf
- 基于粗糙集的图像分类挖掘.pdf
- 基于粗糙集的医疗数据挖掘研究与应用.pdf
- 基于粗糙集的医疗数据挖掘研究与应用.pdf
- [湖州]2024年浙江湖州市应急管理局选调事业单位工作人员笔试历年参考题库(频考点试卷)解题思路附带.docx
- [湖南]2024年湖南省药品检验检测研究院招聘笔试历年参考题库(频考点试卷)解题思路附带答案详解.docx
- 2024年USB电话商务管理系统项目可行性研究报告.docx
- [白城]2024年吉林白城市通榆县事业单位面向下半年应征入伍高校毕业生招聘笔试历年参考题库(频考点试.docx
- [甘肃]2024年甘肃省地质矿产勘查开发局第一地质矿产勘查院招聘52人笔试历年参考题库(频考点试卷).docx
- 2024年端子机刀片刀模项目可行性研究报告.docx
- 2024年情侣相框项目可行性研究报告.docx
- [玉溪]2024下半年云南玉溪市事业单位招聘工作人员189人笔试历年参考题库(频考点试卷)解题思路附.docx
- 2024至2030年双面脚轮项目投资价值分析报告.docx
- [湖南]2024年湖南劳动人事职业学院招聘32人笔试历年参考题库(频考点试卷)解题思路附带答案详解.docx
- [湖南]2024年湖南建筑高级技工学校(湖南建设中等职业学校)招聘17人笔试历年参考题库(频考点试卷.docx
- [烟台]2024年山东烟台市市场监督管理局所属事业单位招聘19人笔试历年参考题库(频考点试卷)解题思.docx
文档评论(0)