快速业务通道

Java线程的讨论与应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

Java线程的讨论与应用

时间:2010-12-08

一、为什么要研究和使用线程

一般来说,计算机正在执行的程序称作进程(process),进程有不同的地址空间并且是在同一系统上运行的不同程序,如WORD和Excel,进程间的通讯是很费时而且有限的。上下文切换、改变运行的进程也是非常复杂的。进程间通讯复杂,可能需要管道、消息队列、共享内存(sharedmemory)或信号处理来保证进程间的通讯。尽管许多程序都在运行,但一次只能与一个程序打交道。

线程(thread)是指进程中单一顺序的控制流。又称为轻量级进程。线程则共享相同的地址空间并共同构成一个大的进程。线程间的通讯是非常简单而有效的,上下文切换非常快并且是整个大程序的一部分切换。线程仅是过程调用,它们彼此独立执行,线程使得在一个应用程序中,程序的编写更加自由和丰富。线程的兴趣在于,一个程序中同时使用多个线程来完成不同的任务。因此如果很好地利用线程,可以大大简化应用程序设计。多线程可以增进程序的交互性,提供更好的能力和功能、更好的GUI和更好的服务器功能。给二个例子说明如下:

例一:利用多线程并行机制可以很好地解决交互式网络程序中的许多问题,如:大量的网络文件资源的读写、用户输入响应、动画显示等问题不需要CPU的多少时间;而耗时的复杂计算通常并不需要立即响应,所以无需将CPU全给它。例如,从一个慢速的网络上读取一数据流也许要1分钟时间,但需要CPU参与传输数据的时间则非常短;响应用户的输入如击键,就算最快的输入员,1秒钟击键10次,也不需要CPU的多少时间。动画程序比较耗时,一幅画在1秒内要重绘5-10次,但CPU在大部分时间仍处于空闲状态。在传统的单线程环境下的问题是用户必须等待每个任务完成后才能进行下一个任务。即使CPU大部分时间空闲,也只能按步就班地工作。多线程可以很好地解决这些问题避免引起用户的等待。如:耗时的复杂计算应用就可划分成两个控制线程:一个处理GUI的用户事件,另一个进行后台计算。

例二:如并发服务器,它面向不定长时间内处理完的请求,对每个请求由服务器的线程处理。传统的并发服务器往往是基于多进程机制的,每个客户一个进程,需要操作系统的干预,进程的数目受操作系统的限制。本文利用Java的线程机制建立了基于多线程的并发服务器。生成和管理他们是相当简单的操作。线程被用来建立请求驱动的服务程序,每个客户一个线程,多个线程可以并发执行。特别地线程具有如下特性(1)线程共享父进程的所有程序和数据(2)有自身的运行单元(3)有它自己的私有存储和执行环境(尤其是处理器寄存器),使得服务器进程不随客户数的增加而线性增加。可减少服务器进程的压力,降低开销,充分利用CPU的资源。以上并发服务器在某一瞬间由同一服务器进程所产生的多个并发线程对多个客户的并发请求采取分而治之的措施,从而解决了并发请求的问题。各线程即可以独立操作,又可以协同作业。降低了服务器的复杂度。

Java是基于操作系统级的多线程环境之上设计的,Java的运行器依靠多线程来执行任务,并且所有类库在设计时都考虑到多线程机制。

二、Java线程的结构

Java支持一种“抢占式”(preemptive)调度方式。

线程从产生到消失,可分5个状态:

Newborn

线程在己被创建但未执行这段时间内,处于一个特殊的"Newborn"状态,这时,线程对象己被分配内存空间,其私有数据己被初始化,但该线程还未被调度。此时线程对象可通过start()方法调度,或者利用stop()方法杀死.新创建的线程一旦被调度,就将切换到"Runnable"状态。

Runnable

Runnable意即线程的就绪状态,表示线程正等待处理器资源,随时可被调用执行。处于就绪状态的线程事实上己被调度,也就

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号