首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > Java线程模型
【标  题】:Java线程模型
【关键字】:Java
【来  源】:http://blog.csdn.net/ydsakyclguozi/archive/2007/04/17/1568081.aspx

Java线程模型

在操作系统中,进程被定义为应用程序的运行实例,是应用程序的一次动态执行。线程是进程内部程序执行的路径,是进程的一个执行单元。从根本上说,线程是可由系统调度的一个最简单的代码单元,负责执行包含在进程的地址空间中的程序代码。

多线程允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其他线程共享一个存储空间,这使得线程间的通信远较进程简单。

多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别,因此只需要设想各个线程是同时执行即可。

Java提供的多线程功能使得在一个程序里可同时执行多个小任务。线程有时也称小进程是一个大进程里分出来的小的独立的进程。多线程带来的更大的好处是更好的交互性能和实时控制性能。当然实时控制性能还取决于系统本身(UNIXWindowsMacintosh等),在开发难易程度和性能上都比单线程要好。传统编程环境通常是单线程的,由于JAVA是多线程的。为了更好的了解线程,用办公室工作人员作比喻。办公室工作人员就象CPU,根据上级指示做工作,就象执行一个线程。在单线程环境中,每个程序编写和执行的方式是任何时候程序只考虑一个处理顺序。打个比方说,就象办公室工作人员从头到尾不受打扰和分心,只安排做一个工作。当然,实际生活中工作人员很难一次只有一个任务,更常见的是工作人员要同时做几件事。老板将工作交给工作人员,希望工作人员做一这个工作,再做点那个工作,等等。如果一个任务无法做下去了,比如工作人员等待另一部门的信息,则工作人员将这个工作放在一边,转入另一个工作。一般来说,老板希望工作人员手头的各个任务每一天都有一些进展。这样就引入了多线程的概念。多线程编程环境与这个典型的办公室非常相似,同时给CPU分配了几个任务或线程。和办公室人员一样,计算机CPU实际上不可能同一时间做几件事,而是把时间分配到不同的线程,使每个线程都有点进展。如果一个线程无法进行,比如线程要求的键盘输入尚未取得,则转入另一线程的工作。通常,CPU在线程间的切换非常迅速,使人们感觉到好象所有线程是同时进行的。多线程编程环境用方便的模型隐藏CPU在任务切换间的事实。模型允许假装成有多个可用的CPU。为了建立另一个任务,编程人员要求另一个虚拟CPU,指示它开始用某个数据组执行某个程序段。

在多线程编程中,每个线程都用编码提供线程的行为,将数据供给编码操作。多个线程可以同时处理同一编码和数据,不同的线程也可能各有不同的编码和数据。事实上编码和数据部分是相当独立的,需要时即可向线程提供。因此经常是几个线程使用同一编码和不同的数据。

Java的设计思想是建立在当前大多数操作系统都实现了线程调度。Java虚拟机的很多任务都依赖线程调度,而且所有的类库都是为多线程设计的。Java利用多线程实现了整个执行环境是异步的。在Java程序里没有主消息循环。如果一个线程等待读取网络数据,它可以运行但不停止系统的其他线程执行。一个线程启动后,它可以被挂起,暂时不让它执行。挂起的线程可以重新恢复执行。任何时间线程都可以被停止,被停止的线程就不能再重新启动。Java语言里,线程表现为线程类,线程类封装了所有需要的线程操作控制。线程类是控制线程行为的惟一的手段。一个Java程序启动后,就已经有一个线程在运行。可通过调用Thread.currentThread()方法来查看当前运行的是哪一个线程。

NetBeans VS Eclipse:【上一篇】
Maven中代理服务器的设定:【下一篇】
【相关文章】
  • java中访问Excel文件
  • java实现一个整数和一个小数的四则运算和求最大值,平均值。
  • java求自然数E
  • java查询分页技术(1)
  • Java开发WebService实例--计数器(上)
  • Java开发WebService实例--计数器(下)
  • JAVA从入门到精通
  • java中换行的\r\n
  • javascript哪位高手帮我解决这个程序的光标定位问题???
  • 集装箱箱号校验规则 javascript
  • 【随机文章】
  • JDK1.4 到 1.5 的移植
  • 网文快抓Delphi源代码
  • 07黑客<谁动了我电脑>网上骗局B 一
  • 用qstat查PBS空闲节点(CPU)
  • boost.spirit (2) -- parser
  • 秋冬季湿疹患者如何护肤,小儿面部湿疹,小儿湿疹,小儿湿疹症状,小儿湿疹的治疗
  • 中兴ADSL全套方案用于政府宽带接入
  • 做个“网络助手”程序
  • SCO UNIX快速入门(增补版)
  • TinyMail研究—Stream及相关设计模式
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.