Java线程与进程(简单易懂)

进程是程序运行的实例,拥有独立的内存空间,而线程是进程内的执行路径,允许并发执行任务。线程间的共享内存使得多任务能同时处理同一数据。即使在单核CPU中,通过时间片轮转,线程也能实现伪并行。多核CPU则能真正实现线程并行计算,提高效率。线程的存在主要是为了实现资源的并行利用,提高程序的响应速度和系统效率。
摘要由CSDN通过智能技术生成

线程和进程的概念

什么是进程?

正在运行中的应用程序,通常称为进程。每个进程都有自己独立的地址空间(内存空间),每当用户启动一个进程时,操作系统就会为该进程分配一个独立的内存空间,让应用程序在这个独立的内存空间中运行。

什么是线程?

线程是一个轻量级的子进程,是最小的处理单元;是一个单独的执行路径。线程可以理解成是在进程中独立运行的子任务。比如,QQ.exe 运行时就有很多的子任务在同时运行。像好友视频、下载文件、传输数据、发送表情等,这些不同的任务或者说功能都可以同时运行,其中每一项任务完全可以理解成是“线程”在工作,传文件、听音乐、发送图片表情等功能都有对应的线程在后台默默地运行

线程是独立的。如果在一个线程中发生异常,则不会影响其他线程。它使用共享内存区域。

看图就完事了

首先这是一段程序,它本身不会执行,就像是一个菜谱.

在这里插入图片描述
程序会由程序员写好放在硬盘中,就相当于食谱可能会放在抽屉里.

在这里插入图片描述
然后为了做这道菜,需要将食谱拿到桌子上然后按步骤做菜,这就相当于为了进行这个程序,CPU会从硬盘中读取程序到内存中,方便CPU读取,那这个在内存中的可执行程序实例就叫做进程,也就是进行中的程序.

这里还可以举一个例子,程序就代表某个流程,规定了先做什么再做什么。可以是打印出的一张白纸,可以是手机、电脑上的pdf,也可以就是领导的口头描述。而进程指的是进行中的程序。工作人员遵循程序(比如领导的话)开始做事,那做事这个过程就称为进程。事情做完了,进程就终止了。

在这里插入图片描述
一个程序如果多次读取到内存中,就会产生多个进程,就像是n次拿出一个菜谱那就会n次做这道菜;硬盘中多个程序读取到内存中进行时,自然也就创造了更多进程,就相当于拿出不同的菜谱就会做出不同的菜.

在这里插入图片描述
每个进程通常只有一个程序计数器,记录当前程序执行的位置,会按照程序顺序计算,这里一个执行流就是一个线程.如果有多个线程的话,就需要多个程序计数器.每个线程会独自运行.

在这里插入图片描述
除此之外,每个线程还有寄存器,堆,栈等程序运行时的状态信息.同时,线程间共享的则有地址空间,全局变量,打开的文件等等信息.

在这里插入图片描述
那为什么在进程中还要有更小的"进程"----线程呢?

假如这是一个文档编辑器,自然就是一个进程,里面存放着相应的程序和文档.此时用户在第二行末打一个回车,我们需要交互的程序接受键盘的按下事件,

在这里插入图片描述
然后,布局的程序将文字重新计算位置,再把他们渲染出来.另外,每隔一段时间,需要写入的程序保存文档在硬盘中.

在这里插入图片描述
这三个程序最好是同时并行,但它们有需要访问修改同一个文档,所以肯定是在同一个进程中的.所以这时需要更轻量级的三个线程.

在这里插入图片描述

现在我们了解到线程是并行的最小单位.假如现在计算机只有一个单核CPU,也就是一次只能执行一个线程,那就需要对每个线程轮流执行,每次单个计算时间成为一个CPU时间片,实际只有几十毫秒,用户根本感觉不到.

在这里插入图片描述
然后对于线程来说,存在等待CPU的时候,称为就绪状态,一旦CPU过来执行,就变成运行状态.

在这里插入图片描述
当CPU转而执行其他线程时,线程就又变为就绪状态.假如线程正在执行中,程序向硬盘发送访问请求,然后等待,这时CPU就变成空转了,所以线程变成阻塞状态,CPU转而执行其他线程.等到硬盘的数据回复,程序又将从阻塞状态转变为就绪状态,等待CPU的再次光临,然后继续执行.

在这里插入图片描述
那如果是多个CPU,确实可以让多个线程真正的并行计算.但是往往线程会很多,所以还是需要时间片轮转.那么为了简化CPU在内核中为每个线程提供各自的虚拟CPU,每个线程会认为自己一直独占CPU,它们就不用考虑时间片轮转问题了.

在这里插入图片描述
.

结语

总结一下,进程就相当于程序运行的过程;而线程是用于实现每个过程或是实现其中的的一小部分.线程存在的主要目的是实现同时并行,所以线程里放的所有方法不一定是实现一个功能的也可能是实现不同功能的,因为主要还是实现同时并行.而在线程中又有方法区,堆栈,程序计数器等来完成其中内容的实现.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值