【JavaEE】——线程的诞生(超详细、易理解)

举报
三三是该溜子 发表于 2025/05/05 10:36:38 2025/05/05
【摘要】 ​一:进程对内存的管理1:进程的独立性:进程是如何管理内存的,核心:每个进程都有一块独立的内存,进程与进程之间的内存互不干扰,通常情况下,进程A的内存不能访问进程B的内存好处“进程独立性”:如果进程A的内存超出了给分配的内存大小(即内存越界)或者出现某些bug导致进程A挂掉,不会影响到进程B的运行二:“进程间的通信”引入:虽然进程有独立性,但是有一些任务还需要进程与进程之间进行相互配合去完成...


一:进程对内存的管理
1:进程的独立性:
进程是如何管理内存的,核心:每个进程都有一块独立的内存,进程与进程之间的内存互不干扰,通常情况下,进程A的内存不能访问进程B的内存

好处“进程独立性”:如果进程A的内存超出了给分配的内存大小(即内存越界)或者出现某些bug导致进程A挂掉,不会影响到进程B的运行

二:“进程间的通信”
引入:虽然进程有独立性,但是有一些任务还需要进程与进程之间进行相互配合去完成

1:内存中的公共空间
进程与进程之间也可以通信,操作系统会在内存当中开辟一块特殊的公共空间,用来进程与进程之间进行“数据交换”,这与进程的“独立性”并不冲突。

2:网络通信
操作系统中提供的“进程间的通信”并不限于上述,在Java中,我们通常以文件和网络的形式来达到“进程间的通信”。后端也大同小异,一般是一组服务器之间进行通信

网络通信(简述)同一台计算机中的不同进程可以通过网络来进行通信,不同计算机的不同进程也可以达到通信的目的(泛用性更广)

三:进程的缺点
引入:对进程的管理和调度(对进程的调度)
前面我们已经学过,像单任务操作系统,并不需要考虑进程这个概念,即不需要对进程进行管理和调度。但是现在的操作系统一般都是多任务操作系统,在一些特殊的场景下,比如任务超多的时候,我们需要频繁地创建和销毁进程时,进程就暴露出它的缺点了。

1:背景

2:索取内存资源
进程在创建之前,第一个要索取的资源就是内存。

过程:所以首先就需要向系统申请一块指定大小的内存资源,系统知道后就把所有空闲的内存块通过数据结构组织在一起,然后再在里面查找一个大小合适的内存,最后分配给进程,进程再把依赖的代码和数据通过硬盘加载到内存当中,

四:线程
引入:
通过以上进程缺点的描述,我们针对“频繁创建和释放进程需要消耗大量的资源”这一问题,提出了“线程”这一概念来解决。

1:线程的概念和特点
线程也叫“轻量化进程”,线程在进程的基础上,保留了原有的独立调度执行的特点,这种“并发支持”,解决了“申请资源”和“释放资源”带来的额外开销这一问题。

2:进程在内存中的分配方式

3:线程在内存中的分配方式

4:进程和线程的结合

5:进程和线程之间的关系
每个进程都可以包含一/多个线程,像有三个小线程的小pcb都指向了a,它们获取a中的代码指令的用途不一定相同(即各取所需)有一个线程申请了a这一块空间后,后面的线程就不必在申请了,大大降低了频繁申请空间和释放空间带来的资源浪费

6:线程的缺点
(1)设置线程是有限的

①线程数量问题

②线程间优先级问题

③线程异常问题

7:前后对比

8:总结

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。