java EE初阶 —进程与线程的区别
创始人
2024-02-16 07:14:16
0

文章目录

  • 1.为什么会引入进程和线程的概念
  • 2.进程和线程的关系
    • 2.1 坤坤吃鸡演示进程和线程区别
      • 2.1.1 线程的安全问题
      • 2.1.2 线程的异常问题

1.为什么会引入进程和线程的概念

引入进程这个概念,最主要的目的是为了解决并发编程这样的问题。
CPU 已经进入了多核心的时代,要想进一步提高程序的执行速度,就需要充分利用 CPU D多核资源。

其实,多进程编程已经可以解决并发编程问题了,这说明已经可以利用起CPU资源了。
但是不好的地方是,进程太重了(消耗的资源多、速度慢

当创建一个进程、销毁一个进程、调度一个进程时,它的开销会比较大。
这里说的太重了是指在资源分配和回收上执行的效率太慢了,消耗的资源多。


鉴于上面的情况,线程应运而生。
线程把申请资源释放资源的操作给省下来了。
在解决并发编程的前提下,让创建、销毁、调度的速度更快一些。
因此线程也叫 “轻量级进程”


举个例子来演示进程和线程概念:

现在有一个工厂要加工一些产品。


此时由于销量比较大,需要将厂子扩建一下。

有两种方案可选。

方案1:再租一块场地,在搞一套设备。


方案1就是多进程的方案


方案2:在原来的场地里,再搞一套生产设备线


方案2就是多线程的方案

很明显方案2要比方案1成本小很多,因为场地和物流体系都可以复用之前的。

此时,在搞第一套生产线的时候,需要吧资源申请到位。
后续追加新的生产线的时候,复用之前的资源即可。

由此可以看出,线程之间资源是共享的

2.进程和线程的关系

进程包含着线程

一个进程可以包含一个线程,也可以包含多个线程,但是不能没有。
只有第一个线程启动的时候开销是比较大的,后续的线程就省事了。
同一个进程里的多个线程之间,共用了进程的同一份资源。
这里的资源指的是,内存文件描述符表

  • 第一个线程创建的对象,进程里的其他线程可以直接使用。
  • 第一个线程打开的文件,其他的线程都可以直接使用。

如果一个进程有多个线程,每个线程是独立在CPU上调度的,即线程是操作系统调度的基本单位。
每个线程也都有自己的支持逻辑(执行流

2.1 坤坤吃鸡演示进程和线程区别


有一个坤坤要吃100只鸡


如果是采用多进程的方式吃鸡:

现在有两个坤坤,两个房间、两个桌子,此时的成本会比较高。


如果是采用多线程的方式吃鸡:

现在增加一只坤坤即可。


两只坤坤同时吃鸡,不需要增加桌子和房间,效率提升的同时成本也减少了。


按照上面的逻辑,如果让更多的坤坤吃鸡,速度岂不是更快吗?


增加线程数量的时候,也不是可以一直可以提升速度的!!!
桌子的空间是有限的(CPU的核心数量也是有限的
如果坤坤太多,大家挤来挤去,这就会导致正在吃的坤坤无法专心吃。

因此,线程太多,核心数目有限,不少的开销会浪费在线程调度上了。

2.1.1 线程的安全问题

多线程的情况下,多个坤坤共享一份鸡肉,此时就可能会打架。

大坤和小坤同时看上了一个一只鸡,都去吃,就可能会打起来。


在多进程中,不会出现这种情况,因为多进程里已经把鸡给分好了,自己吃自己的。

这就是线程的安全问题。(线程不安全)

2.1.2 线程的异常问题

大坤先把鸡给吃了,导致小坤吃不到了。小坤就会生气,你小坤哥就会把桌子掀了。

此时如果一个线程抛异常,如果处理不好,很可能把整个进程都给带走了。
其他的线程也就挂了。


多个执行流访问同一个共享资源的时候,就会有安全问题。

线程模型,天然就是资源共享的。
多线程争抢同一个资源(同一个变量),这时是非常容易触发安全问题的。

进程模型,天然是资源隔离的,不容易触发安全问题。
进行进程间通信的时候,多个进程访问同一个资源,可能就会出问题。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...