进程与线程的区别与联系

进程

  一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。

线程
进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。

与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。Java 程序天生就是多线程程序。

存在意义
如今各种操作系统均能实现多进程同时执行,也就是支持并发编程。一个进程的创建需要消耗计算机资源,销毁意味着要释放资源。当很多个进程同时执行时,计算机资源的消耗太大,执行效率较低。
如何才能提高并发编程的效率?有两种方式:

    进程池:像String常量池、数据库中的连接池,使用进程池来存储多个进程,当进程销毁时并不真的释放这个进程而是将进程存储到进程池中,这样再次使用该进程时直接从进程池中取就好。但进程池维护进程意味着在进程不使用的时候同样需要消耗不少的计算机资源。


    使用线程实现并发编程:线程存在于进程当中,一个进程中有很多个线程。线程较进程而言更加轻量,创建、摧毁、调度一个线程要快于进程。之所以快,是因为多个线程是存在于一个进程当中的,共享一份资源,当在一个进程中创建多个线程时,只有第一个线程的创建需要分配资源,之后线程的创建直接共享该资源即可。进程和线程之间的关系就相当于工厂和工厂中的生产线。一个工厂中有多个生产线,生产线的创建、销毁的成本要低于一个工厂。当然一个进程中的线程并不是说越多越好,因为一个进程中的多个线程可能在消耗同一份资源,如果线程之间过多会出现忙等,反而不会提升并发编程的效率,一个进程中的线程的个数与硬件设备的等级有关。
 

从用户角度看

进程是正在运行的程序实例

线程是进程中执行执行任务的基本单位

也就是说一个运行的程序至少包含一个进程,一个进程至少包含一个线程,线程不能独立于进程存在。

联系:

进程包含线程,一个进程中可以有一个或者多个线程。
进程和线程都是为了解决并发编程。但线程的效率要高于进程,因为多个线程可以共享一份资源,而进程和进程之间是独立的,进程的创建和销毁是一定需要消耗资源的。


区别:

进程是操作系统分配资源的最小单位,线程是操作系统调度的最小单位。
进程具有独立性,进程A的崩溃不会影响到进程B的崩溃;在一个进程中的多个线程是共享一份资源的,一个线程的崩溃可能会影响到该进程中其他线程的崩溃,进而导致整个进程崩溃。
进程间的通信需要在内核中进行,而线程因为共享一份资源可以直接进行通信。
 

1. 从属关系不同
进程是正在运行程序的实例,进程中包含了线程,而线程中不能包含进程

2. 描述侧重点不同
进程是操作系统分配资源的单位,而线程是操作系统调度的基本单位

3. 共享资源不同
多个进程之间不能共享资源,每个进程有自己的堆、栈、虚存空间(页表)、文件描述符等信息

而线程之间可以共享进程资源文件(堆和方法区)

4.上下文切换速度不同
线程上下文切换速度更快,线程上下文是指从一个线程切换到另一个线程

而进程的上下文切换速度较慢

每个进程都有独立的数据空间(程序上下文),进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程的切换的消耗随略小于进程,较少进行内存和磁盘的交换,但是仍然会有堆栈的映射和切换。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值