java多线程概念

java多线程概念

ID:31707868

大小:57.18 KB

页数:3页

时间:2019-01-17

java多线程概念_第1页
java多线程概念_第2页
java多线程概念_第3页
资源描述:

《java多线程概念》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java多线程概念2009-03-0221:07多线程概念通常线程是在系统层被实现的。java是第一个在语言中实现的。java在语言级提供了对多线程设计的支持。程序:是计算机指令的集合,它以文件的形式存储在磁盘上。进程:是一个程序在其自身的地址空间中的一次执行活动。进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源。线程:是进程中的一个单一的连续控制流程。一个进程可以拥有多个线程。线程又称为轻量级进程,它

2、和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。并发编程:在计算机编程中有一个基木概念,就是在同一时刻处理多个任务的思想。许多程序设计问题都要求程序能够停下正在做的工作,转而处理某个其他问题,然后再返回主进程。有许多方法可以实现这个目的。最初,程序员们用所掌握的有关机器底层的知识来编写中断服务程序,主进程的挂起是通过硬件中断来触发的。尽管这么做可以解决问题,但是其难度太大,而且不能移植,所以使得将程序移植到

3、新型号的机器上时,既费时又费力。有时中断对于处理时间性强的任务是必需的,但是对于人量的其他问题,我们只是想把问题切分成多个可独立运行的部分(任务),从而提高程序的响应能力。在程序屮,这些彼此独立运行的部分称之为线程,上述概念被称为“并发”。并发最常见的例子就是用户界面。通过使用任务,用户可以在揪下按钮后快速得到一个响应,而不用被迫等待到程序完成当前任务为止。为什么要使用多线程?多线程帮助你写出CPU最大利用率的高效程序。举例来说,网络的数据传送速率远远低于CPU处理能力,本地文件系统资源的读写速度也远远低于CPU的

4、处理能力,在传统的单线程环境中,你的程序必须等待每一个这样的任务完成以后才能执行下一步一尽管CPU大部分时间处于空闲。而JAVA的多线程能使你充分利用这些空闲的时间。在一个单线程程序中如果出现阻塞则整个程序都可能停止运行,而在一个多线程的程序屮这不会出现这样的问题。当一个线程阻塞时,别的线程会运行,这样可以大大的提高CPU效率。java线程模型在程序的执行过程当中,某一个时刻只能有一个线程运行,那为什么我们在启动多个进程或者一个进程多个线程的吋候,我们看到这几个进程或线程在同吋运行呢?这是因为在单个CPU的情况下,

5、操作系统决定会在一个极短的时间片段屮执行一个线程,那么当这个吋间片段运行结束以后,系统会决定运行其他的一个线程。因为这个时间片段很短,频繁着发生切换,给我们的感觉就好象是这几个线程同时在运行一样。问题:既然在单CPU情况下,某一个时刻只能有一个线程运行,那么我们为什么要设计多线程呢?我们能不能够设计多进程来代替多线程呢?我们在程序设计的时候应该考虑到程序的可移植性,当这个程序放到多CPU平台下的吋候,同时运行多个线程,从而达到真正意义上的并发运行。至于能不能用多进程代替多线程,前面就已经说明了。java线程优先级j

6、ava自动给每个线程安排优先级以决定与其他线程比较时该如何对待该线程。线程的优先级是用来决定何时从一个运行的线程切换到另一个,这叫“上下文转换”。Java使用本身的线程调度器来安排线程的运行。java的线程调度器是抢占式的分配进程(分配给每个线程相等的CPU时间的进程)。抢占式调度模型就是许多线程处于可以运行状态(等待状态),但实际上只有一个线程在运行。该线程一直运行到它终止进入可运行状态(等待状态),或者另一个具有更高优先级的线程变成可运行状态。在后一种情况下,低优先级的线程被高优先级的线程抢占,高优先级的线程获

7、得运行的机会。具有高优先级的线程它会抢占底优先级线程运行的机会,但是这个不是绝对的,一个长时间处于等待状态的底优先级线程仍然可能被线程调度器来选择运行。Java线程调度器支持不同优先级线程的抢先方式,但其木身不支持相同优先级线程的时间片轮换。但是Java运行时系统所在的操作系统(例如:Windows2000)支持吋间片的轮换,那么Java也就支持相同优先级线程的时间片轮换。主线程java程序都有的线程:主线程。当java程序启动时,一个线程立即运行,该线程通常叫做程序的主线程。因为他是程序开始时就执行的。主线程的重

8、要性体现在两方面:1,它是产生其他子线程的线程。2,通常他必须最后完成执行,因为它执行各种关闭动作。主线程是可以控制的。可以由一个Thread对象控制。可以用currentThread()获得这个主线程的引用。然后你就可以像控制其他线程那样控制这个主线程。比如:classCurrentThreadDemo{publicstaticvoidmain(Strin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。