- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java多线程概念
Java多线程概念
2009-03-02 21:07
多线程概念通常线程是在系统层被实现的。java是第一个在语言中实现的。java在语言级提供了对多线程设计的支持。
程序:是计算机指令的集合,它以文件的形式存储在磁盘上。
进程:是一个程序在其自身的地址空间中的一次执行活动。进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源。
线程:是进程中的一个单一的连续控制流程。一个进程可以拥有多个线程。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。
并发编程:在计算机编程中有一个基本概念,就是在同一时刻处理多个任务的思想。许多程序设计问题都要求程序能够停下正在做的工作,转而处理某个其他问题,然后再返回主进程。有许多方法可以实现这个目的。最初,程序员们用所掌握的有关机器底层的知识来编写中断服务程序,主进程的挂起是通过硬件中断来触发的。尽管这么做可以解决问题,但是其难度太大,而且不能移植,所以使得将程序移植到新型号的机器上时,既费时又费力。有时中断对于处理时间性强的任务是必需的,但是对于大量的其他问题,我们只是想把问题切分成多个可独立运行的部分(任务),从而提高程序的响应能力。在程序中,这些彼此独立运行的部分称之为线程,上述概念被称为“并发”。并发最常见的例子就是用户界面。通过使用任务,用户可以在揿下按钮后快速得到一个响应,而不用被迫等待到程序完成当前任务为止。
为什么要使用多线程?
多线程帮助你写出CPU最大利用率的高效程序。举例来说,网络的数据传送速率远远低于CPU处理能力,本地文件系统资源的读写速度也远远低于CPU的处理能力,在传统的单线程环境中,你的程序必须等待每一个这样的任务完成以后才能执行下一步--尽管CPU大部分时间处于空闲。而JAVA的多线程能使你充分利用这些空闲的时间。在一个单线程程序中如果出现阻塞则整个程序都可能停止运行,而在一个多线程的程序中这不会出现这样的问题。当一个线程阻塞时,别的线程会运行,这样可以大大的提高CPU效率。
java线程模型
在程序的执行过程当中,某一个时刻只能有一个线程运行,那为什么我们在启动多个进程或者一个进程多个线程的时候,我们看到这几个进程或线程在同时运行呢?这是因为在单个CPU的情况下,操作系统决定会在一个极短的时间片段中执行一个线程,那么当这个时间片段运行结束以后,系统会决定运行其他的一个线程。因为这个时间片段很短,频繁着发生切换,给我们的感觉就好象是这几个线程同时在运行一样。问题:既然在单CPU情况下,某一个时刻只能有一个线程运行,那么我们为什么要设计多线程呢?我们能不能够设计多进程来代替多线程呢?我们在程序设计的时候应该考虑到程序的可移植性,当这个程序放到多CPU平台下的时候,同时运行多个线程,从而达到真正意义上的并发运行。至于能不能用多进程代替多线程,前面就已经说明了。
java线程优先级java自动给每个线程安排优先级以决定与其他线程比较时该如何对待该线程。线程的优先级是用来决定何时从一个运行的线程切换到另一个,这叫“上下文转换”。Java使用本身的线程调度器来安排线程的运行。java的线程调度器是抢占式的分配进程(分配给每个线程相等的CPU时间的进程)。抢占式调度模型就是许多线程处于可以运行状态(等待状态),但实际上只有一个线程在运行。该线程一直运行到它终止进入可运行状态(等待状态),或者另一个具有更高优先级的线程变成可运行状态。在后一种情况下,低优先级的线程被高优先级的线程抢占,高优先级的线程获得运行的机会。 具有高优先级的线程它会抢占底优先级线程运行的机会,但是这个不是绝对的,一个长时间处于等待状态的底优先级线程仍然可能被线程调度器来选择运行。Java线程调度器支持不同优先级线程的抢先方式,但其本身不支持相同优先级线程的时间片轮换。但是Java运行时系统所在的操作系统(例如:Windows2000)支持时间片的轮换,那么Java也就支持相同优先级线程的时间片轮换。
主线程java程序都有的线程:主线程。当java程序启动时,一个线程立即运行,该线程通常叫做
程序的主线程。因为他是程序开始时就执行的。主线程的重要性体现在两方面:1,它是产生其他子线程的线程。2,通常他必须最后完成执行,因为它执行各种关闭动作。主线程是可以控制的。可以由一个Thread对象控制。可以用currentThread()获得这个主线程的引用。然后你就可以像控制其他线程那样控制这个主线程。比如:class CurrentThreadDem
文档评论(0)