【JavaEE】——线程的诞生(超详细、易理解)
一:进程对内存的管理
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:总结
- 点赞
- 收藏
- 关注作者
评论(0)