网站大量收购闲置独家精品文档,联系QQ:2885784924

计算机中多线程问题.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机中多线程问题

计算机中多线程问题   摘 要 计算机中的多线程问题的研究是并行计算研究的基础,更是高效计算机系统设计的重要组成部分。本文首先介绍了线程和进程的区别,然后主要阐述了多线程的概念模型及分类, 随后介绍了JAVA中的多线程机制,最后就多线程的应用问题进行了简单介绍。   关键词 进程;线程;并发;资源   中图分类号TP39 文献标识码A 文章编号 1674-6708(2013)103-0218-02   1 多线程的相关概述   1.1进程与线程的区别   对并行计算的研究是当代高效计算机系统设计中至关重要的一部分,并行的效果往往依赖于支持并行性的系统所提供的并发机制。进程是计算机资源分配的单位。一个大任务一般可以分成多个子任务, 这些子任务的执行组成了整个任务功能。线程和进程的区别主要存在于创建线程的阶段, 线程相较于进程并不是复制父进程映象, 而是和父进程一起实现共享。多个线程一起共享各种资源和同一地址空间, 不同的只有代码段和私有栈。因此创建线程和调度线程的费用与原来的方式相比明显降低了。   1.2线程   所谓线程(thread),简单地说就是指进程中的单一顺序控制流(a thread is a single stream of execution with in a process)。线程是程序的一个调度单位,同时也是计算机科学领域的术语之一。线程的另一个别称是轻量级进程(lightweight processes)。线程往往有自己的寄存器集、局部线程变量、栈、线程说明数据、程序计数器、状态信息以及线程说明信号掩码。一个进程里的多个线程之间往往要共享同样的的地址空间并共同构成一个大的进程,线程执行的基础是要先有进程的执行,也就是说线程其实是无法独立执行的。   1.3多线程   多线程是从硬件或软件上实现多个线程并发执行的一种技术。有多线程能力的计算机往往具有强大的硬件支持,因而能够同时运行多于一个的线程,进而提升了整体处理的效能。引进多线程具有一定的必要性,因为多线程具有诸多优点。多线程可以提高系统的吞吐率和程序的响应效率,同时有助于改善程序的结构,从而使用户能够更加有效地利用好系统的资源。此外,多线程在降低资源的占用和加强用户间通信效果等诸多方面也有积极的作用。例如,我们在word中打印文件的过程,对文件的编辑并不会影响到对文件的打印,编辑操作和打印操作其实是异步执行的,或者可以理解为打印操作是在后台完成的。这是因为系统创建了两个独立线程来分别完成对文件的编辑和对文件的打印,同时规定负责编辑文档的线程的优先级要高于负责打印文档的线程。在我们实际的应用中,多线程的方法非常适合用于解决多个独立任务组成的问题。   2线程的分类   2.1用户级线程   用户级线程(user level threads)是由用户程序来负责管理的,传统的操作系统内核只负责对进程的管理。   操作系统通常会提供一个能够在用户空间里执行的线程库,以方便用户程序对于用户级线程的管理工作。这个能够在用户空间里执行的线程库提供了包括线程的创建、线程的调度、线程的执行、线程的撤销、线程间通信以及存储上下文在内的一些功能。有了线程库提供的这些功能,用户级线程的实现就不再需要操作系统给予其他的特殊支持了。此外,对于操作系统分配的用户堆栈和用户寄存器,用户级进程只能使用其所属进程被分配的用户堆栈和用户寄存器。   用户级线程的上下文切换与内核无关,所以可能存在相关进程的状态是阻塞或等待的,而属于该进程的线程状态却是执行情况。   2.2核心级线程   核心及线程与用户级线程的不同之处在于,前者不仅可以在同一个处理机上被并发执行,还可以在不同处理机上被并行执行。所以操作系统内核在负责同一进程内部的不同线程的调度工作的同时,可能也要进行不同进程之间的调度工作。这种工作机制有效地避免线程处于执行状态、进程处于等待或阻塞状态的情况发生。而另外,为了达到提高操作系统内核程序执行效率的效果,核心级线程技术也会用于内核程序自身。综上,和用户级线程进行比较,核心级线程在上下文切换上所用的时间要大于用户级线程。   3 JAVA中的多线程机制   3.1 JAVA中线程的创建   在JAVA语言中,可采用两种方式产生线程。第一种方法是继承,即通过继承Thread类的方法,重写和覆盖部分方法run(),然后即可创建和启用自己定义的线程实例,当然这些线程实例是在应用程序类里创建和启动的。另一种方法是实现Runnable接口。这种方法也是目前是非常常用的创建线程的方法之一,它打破了第一种方法(即继承Thread类)受到的的限制。在JAVA的类库里,Runnable接口中仅仅包含了一个run()方法。所有对象,只要属于能够实现该接口的类,

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档