【Java笔记】进程和线程的区别与联系?

这是一个常见的面试题,先说这个问题的结论:

进程和线程的区别与联系?

  1. 进程中包含线程,一个进程中至少有一个线程,即主线程;
  2. 进程是系统分配资源的最小单位,线程是 CPU 调度的最小单位;
  3. 线程之间共享进程申请的系统资源;
  4. 线程之间可以相互影响,一个线程出现问题可能导致整个进程崩溃,进程之间不受影响;

1. 通过一个简单的场景理解进程和线程的关系

假设张三要开一个工厂,需要做以下事情:

序号需要做的事情成本
1在工业园区申请一块地皮几个月时间,几十万块钱
2建厂一个月时间,几十万块钱
3建生产线两周时间,几十万块钱
4招人,买材料一天时间,十万块钱
5开工生产产生利润

通过一张图来帮助我们理解进程和线程之间的关系,务必认真体会理解:

在这里插入图片描述

图中:

  • 工业园区相当于操作系统
    • 工业园区给你分配了一块地皮,就相当于操作系统给你分配的资源;
  • 张三开的工厂就相当于一个进程
    • 工厂就相当于在操作系统上申请的一个进程;
    • 在工业园区中,工厂就是生产的最小单位;类比到操作系统中,进程就是系统分配资源的最小单位;
  • 生产线就相当于一个线程
    • 工厂中有生产线,即进程中包含线程
    • 要生产出产品,工厂内至少需要一个生产线;类比到进程中,创建出一个进程至少包含一个线程,这个线程就叫做主线程;
    • 由于要扩大生产,可以新开一个工厂,也可以增加生产线,显然,最划算的方法就是增加生产线,生产线都共同使用着工厂的电量、材料等资源;类比线程中的线程之间共享进程申请的资源;
    • 生产线是生产产品的最小单位,因此线程是 CPU 调度的最小单位;
    • 当一个生产线崩溃时,可能导致工厂的电路损坏,可能导致其他生产线崩溃,进而导致工厂停止运转;类比到线程中,线程之间可以相互影响,一个线程出现问题可能导致整个进程崩溃,进程之间不受影响
  • 开工生产就相当于线程的任务
  • 工厂和工厂之间互不干扰,类比到进程中,进程和进程之间,涉及的各种资源彼此之间不受影响,进程之间是相互独立的

2. 线程相比于进程的优势?

  1. 线程的创建速度比进程快
  2. 线程的销毁速度比进程快
  3. 线程的 CPU 调度的速度比进程快
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值