• Java EE|进程与线程的区别与联系


    大数据时代,数据规模非常庞大,所以我们在实际开发过程中,需要经常进行并发问题的处理。对于此问题,我们通常有两种解决方案:多进程方式和多线程方式。但是由于多进程对于资源的共享非常困难,而多线程并发可以较好的解决这个问题,所以我们所说的并发一般就是多线程并发。

    不管是在我们今后的学习还是面试,这都是非常重要的一个概念,我们必须要掌握。在学习过程中,我们经常会把进程和线程对比进行理解。

    1.什么是进程?什么是多进程?多进程又有什么好处?有什么缺点?

    (1)进程定义:一个程序跑起来就是一个进程。进程可以是整个程序/部分程序的执行状态。一个程序可以对应一个或多个进程。

    进程是OS进行资源分配的基本单位。是由OS进行组织和描述的,这个组织结构是PCB(进程控制块)。

    (2)多进程定义:它是一种机制。多进程就是一个cpu核心上宏观上同时执行多个进程,实际上微观上并不是这样的,只是因为进程与进程之间切换的频次过快,人眼观察不到而已。

    (3)多进程好处:提高CPU的效率

    (4)多进程缺点:每在OS上开辟一个进程,都会涉及到cpu资源分配、内存分配、文件描述等资源分配问题。在数据量非常大的场景下,效率会较低。

    2.什么是线程?什么又是多线程?多线程有什么好处?有什么缺点?

    (1)线程定义:线程是进程中的一个执行单元(即进程包含线程),又称为轻量级进程。它和进程一样,拥有独立的执行控制。

    (2)多线程定义:这是一种机制,多线程允许程序中并发执行多个执行流,每个执行流都称为一个线程。

    (3)多线程好处:线程之间彼此独立,但同时又容易共享数据,通过并发执行可以提高程序的效率和性能。相当于是进程的plus版本,能完成任务,但同时又能够减少资源分配的时间开销。

    (4)多线程缺点:进程和线程是包含关系,线程和进程是隶属关系。尽管在我们说线程和进程在完成任务的效果上是一样的,但是实际上没有进程就没有线程,线程必须依赖进程进行资源分配。同一个进程中,如果存在多个线程,一个线程崩了,整个进程也就崩了。也就是说相较于进程,线程的执行效率更高,但相应的也有着更不安全的特性。另外,多线程下,OS的有一个资源抢占的特性,这就会造成结果/执行顺序的不可控性

    另外,注意:一个进程只有一个pid,一个线程就有一个pcb,只不过同一个进程下的不同线程的pid是相同的。

    可能上边的文字有点绕,下边我再来举个例子来解释这个问题

    3.进程和线程的区别与联系

    • ①线程划分尺度小于进程,线程隶属于某个进程

    • ②进程是属于程序的一种动态形式,是OS资源分配的基本单位,进程包含线程

    • ③通信问题:进程之间相互独立,通信比较困难;同进程下的不同线程,共享一块内存区域,通信比较方便。

    • ④执行过程区别:进程执行中拥有比较固定的入口、执行顺序和出口,而线程会被对应的进程控制,即使是同一进程下的不同线程执行顺序也是不可控的。

  • 相关阅读:
    2022 CSP 游记
    .NET跨平台框架选择之一 - Avalonia UI
    为了让线上代码可追溯, 我开发了这个vite插件
    [开源]基于 AI 大语言模型 API 实现的 AI 助手全套开源解决方案
    PMP模拟题 | 每日一练,快速提分
    包管理工具--》npm的配置及使用(一)
    win11安装anaconda, tenserflow gpu 版本 ,cuda toolkit ,cudnn
    《Go 语言第一课》课程学习笔记(十五)
    Android修行手册-溢出父布局的按钮实现点击
    为什么md5不可逆,却还可能被md5免费解密网站解密
  • 原文地址:https://blog.csdn.net/moteandsunlight/article/details/127980285