java进程和线程的区别别

工具类服务
编辑部专用服务
作者专用服务
浅谈进程与线程的区别
根据操作系统的定义,进程是系统资源管理的最小单位,线程是程序执行的最小单位.线程和进程十分相似,本文从不用角度介绍进程与线程的区别.
作者单位:
武汉大学计算机学院
年,卷(期):
机标分类号:
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社进程与线程的区别_百度知道
进程与线程的区别
进程间是独立的,这表现在内存空间,上下文环境;线程运行在进程空间内。
一般来讲(不使用特殊技术)进程是无法突破进程边界存取其他进程内的存储空间;而线程由于处于进程空间内,所以同一进程所产生的线程共享同一内存空间。
同一进程中的两段代码不能够同时执行,除非引入线程。
线程是属于进程的,当进程退出时该进程所产生的线程都会被强制退出并清除。
线程占用的资源要少于进程所占用的资源。
进程和线程都可以有优先级。
在线程系统中进程也是一个线程。可以将进程理解为一个程序的第一个线程。
其他类似问题
为您推荐:
线程的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁热门关键字:
         
进程和线程的区别联系
作者:admin 来源:未知
进程和线程的关系   线程是在进程内用于调度和占有处理机的基本单位,它是由线程控制表、存储线程上下文的用户栈以及核心栈组成。线程课文分为用户级线程、核心级线程以及用户/核心混合型线程等类型。其中用户级线程在用户态下执行,CPU调度算法和各线程优先级都由用户设置,与操作系统内核无关。核心级线程的调度算法及线程优先级的控制权在操作系统内核。混合线程的控制权则在用户和操作系统内核二者。   线程核进程的联系每个进程只少有一个执行线程。 进程和线程的区别   (1)、进程是资源管理的基本单位,它拥有自己的地址空间和各种资源,例如内存空间、外部设备;线程只是处理机调度的基本单位,它只和其他线程一起共享资源,但自己没有任何资源。   (2)、以进程为单位进行处理机切换和调度时,由于涉及到资源转移以及现场保护等问题,将导致处理机切换时间变长,资源利用率降低。以线程为单位进行处理器切换和调度时,由于不发生资源变化,特别是地址空间的变化,处理机切换的时间较短,从而处理机效率也较高。   (3)、对用户来说,多线程可减少用户的等待时间,提高系统的响应速度。例如,当一个进程需要对两个不同的服务器进行远程调用时,对于无线程的操作系统来说需要顺序等待两个不同的调用返回结果后才能继续执行,且在等待中容易发生进程调度。对于多线程系统而言,则可以在同一进程中使用不同的线程同时进行远程过程调用,从而缩短进程的等待时间。   (4)、线程和进程一样,都有自己的状态,也有响应的同步机制,不过,由于线程没有单独的数据和程序空间,因此,线程不能像进程的数据与程序那样,交换到外存储空间。从而线程没有挂起状态。   (5)、进程的调度、同步等控制大多由操作系统内核完成,而线程的控制既可以由操作系统内核进行,也可以由用户控制进行。热门关键字:
         
多进程与多线程的深度比较
嵌入式Linux中文站,关于多进程和多线程,教科书上最经典的一句话是&进程是资源分配的最小单位,线程是CPU调度的最小单位&。这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有那么简单了,选的不好,会让你深受其害。
经常在网络上看到有XDJM问&多进程好还是多线程好?&、&Linux下用多进程还是多线程?&等等期望一劳永逸的问题,只能说:没有最好,只有更好,根据实际情况来判断,哪个更加合适就是哪个好。
我们按照多个不同的维度,来看看多进程和多线程的对比(注:因为是感性的比较,因此都是相对的,不是说一个好得不得了,另一个差的无法忍受)
数据共享、同步
数据是分开的:共享复杂,需要用IPC;同步简单
多线程共享进程数据:共享简单;同步复杂
占用内存多,切换复杂,CPU利用率低
占用内存少,切换简单,CPU利用率高
创建销毁、切换
创建销毁、切换复杂,速度慢
创建销毁、切换简单,速度快
编程简单,调试简单
编程复杂,调试复杂
进程间不会相互影响
一个线程挂掉将导致整个进程挂掉
适应于多核、多机分布 ;如果一台机器不够,扩展到多台机器比较简单
适应于多核分布
1)需要频繁创建销毁的优先用线程。实例:web服务器。来一个建立一个线程,断了就销毁线程。要是用进程,创建和销毁的代价是很难承受的。2)需要进行大量计算的优先使用线程。所谓大量计算,当然就是要消耗很多cpu,切换频繁了,这种情况先线程是最合适的。实例:图像处理、算法处理3)强相关的处理用线程,若相关的处理用进程。什么叫强相关、弱相关?理论上很难定义,给个简单的例子就明白了。一般的server需要完成如下任务:消息收发和消息处理。消息收发和消息处理就是弱相关的任务,而消息处理里面可能又分为消息解码、业务处理,这两个任务相对来说相关性就要强多了。因此消息收发和消息处理可以分进程设计,消息解码和业务处理可以分线程设计。4)可能扩展到多机分布的用进程,多核分布的用线程。5)都满足需求的情况下,用你最熟悉、最拿手的方式。
至于&数据共享、同步&、&编程、调试&、&可靠性&这几个维度的所谓的&复杂、简单&应该怎么取舍,只能说:没有明确的选择方法。一般有一个选择原则:如果多进程和多线程都能够满足要求,那么选择你最熟悉、最拿手的那个。
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
嵌入式linux中文站
用微信扫一扫关注我们
随时获取最新开源资讯

我要回帖

更多关于 线程 的文章

 

随机推荐