- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 Java的线程处理
第10章 Java的线程处理 10.1 线程的基本概念 10.2 线程的属性 10.3 线程组 10.4 多线程程序的开发 10.1 线程的基本概念 我们已经对多任务非常熟悉,Windows和Linux都是多任务的操作系统。这些操作系统可以同时运行两个或两个以上的程序,并且看起来这些程序似乎在同时运行。当然,除非你的计算机拥有多个处理器,否则这些程序是不可能同时运行的。操作系统负责把系统资源分配给这些运行中的程序,并让人感觉它们是并发活动的。图10.1显示了支持多任务的操作系统和不支持多任务的操作系统运行程序的情况。 实现多任务通常有两种方法,一种称为抢占式多任务(preemptive multitasking);一种叫合作式多任务(cooperative multitasking)。对于抢占式多任务,操作系统自行决定何时中断一个程序,将执行时间分给其他程序。相反,对于合作式多任务操作系统将与程序进行协商,只有程序自愿放弃控制时才被中断。虽然抢占式多任务实现起来困难一些,但却有效得多。对于合作式多任务来说,一个运行不好的程序会占有整个系统。 多线程把操作系统的多任务原理应用到程序中,进一步发展了这一原理。应用了多线程技术的程序如同多任务操作系统一样,可以同时执行多个任务。每个任务被称为一个线程——它是线程控制流的简称。实际上,多线程的应用非常广泛,例如,浏览器在下载数据的同时还可以浏览其他网页,或者当某个网页下载太慢时,还可以控制浏览器中止这个网页浏览。Java语言本身也使用一个线程在后台收集无用的内存单元——这样就减少了用户管理内存的麻烦! 通常,我们把操作系统的多个任务称为进程(Process),而程序中的多任务则称为线程。那么,线程和进程之间有什么区别呢?最基本的区别就是每个进程都拥有一组完整的属于自己的变量,而线程则共享这些数据。看起来这样似乎不如进程安全,确实如此,本章后面将会更详细地讨论。但线程的优势在于创建和注销线程的开销比运行新的进程少得多,所以现在主流的操作系统都支持多线程。而且,和进程间的通信相比,线程间的通信要快得多,也方便得多。 10.1.1 线程 不少程序语言都提供对线程的支持,同这些语言相比,Java的特点是从最底层开始就对线程提供支持。除此以外,标准的Java类是可重载的,它允许在一个给定的应用程序中由多个线程调用同一方法,而线程彼此之间又互不干扰。Java的这些特点为多线程应用程序的设计奠定了基础。 究竟什么是线程呢?正如图10.2中所示,一个线程是给定的指令的序列 (你所编写的代码)、一个栈(在给定的方法中定义的变量),以及一些共享数据(类一级的变量)。线程也可以从全局类中访问静态数据。 每个线程都有其自己的堆栈和程序计数器(PC)。用户可以把程序计数器(PC)设想为用于跟踪线程正在执行的指令,而堆栈用于跟踪线程的上下文(上下文是当线程执行到某处时,当前的局部变量的值)。虽然用户可以编写出在线程之间传送数据的子程序,但在正常情况下,一个线程不能访问另外一个线程的栈变量。 一个线程或执行上下文由三个主要部分组成: ① 一个虚拟处理机 ② CPU执行的代码 ③ 代码操作的数据 代码可以或不可以由多个线程共享,这和数据是独立的。两个线程如果执行同一个类的实例代码,则它们可以共享相同的代码。 类似地,数据可以或不可以由多个线程共享,这和代码是独立的。两个线程如果共享对一个公共对象的存取,则它们可以共享相同的数据。 在Java编程中,虚拟处理机封装在Thread类的一个实例里。构造线程时,定义其上下文的代码和数据是由传递给它的构造函数的对象指定的。 10.1.2 创建线程 在Java平台中,创建一个线程非常简单,最直接的方法就是从线程类java.lang.Thread继承。在缺省情况下,线程类可以被所有的Java应用程序调用。为了使用线程类,我们需要了解The java.lang.Thread 类中定义的五个方法: ● run():该方法用于线程的执行。你需要重载该方法,以便让线程做特定的工作。 ● start():该方法使得线程启动run()方法。 ● stop():该方法同start()方法的作用相反,用于停止线程的运行。 ● suspend():该方法同sto
您可能关注的文档
最近下载
- 某公司完整版审批权限表.doc VIP
- 2025浙江杭州青山湖科技城投资集团有限公司下属子公司招聘11人考试模拟试题及答案解析.docx VIP
- 马自达-马自达6阿特兹-产品使用说明书-马自达6阿特兹 2.5L蓝天尊崇版-CA7250ATE4-MAZDA6ATENZA用户手册.pdf VIP
- 泡泡玛特简介.pptx VIP
- 马勒第一交响曲(钢琴版)第3乐章.pdf VIP
- 西门子断路器3WL操作手册.pdf
- 《产业园区投建营数字化平台建设指南》.pdf VIP
- 00015 《英语(二)》高频 100 题.doc VIP
- 2024年一建管理真题完整.docx VIP
- 中医面诊知识培训课件.pptx VIP
文档评论(0)