进程 线程 纤程(协程) 详解

进程是操作系统分配资源的基本单位,每个进程有独立的内存空间;线程是执行调度的基本单位,是进程内的执行路径,多个线程共享进程的内存。纤程(Fiber)是用户态线程,轻量级,不涉及OS调度,切换更快,资源占用少。Java中线程与OS线程对应,纤程则提供更高效的并发解决方案。
摘要由CSDN通过智能技术生成

什么是进程,线程,纤程以及他们有什么区别

说的通俗易懂点:进程就是一个程序运行起来的一种状态,线程是一个进程不同的执行路径(一个进程可以拥有多个线程,也就是我们开发中所谓的多线程),通常是为了提高执行效率,降低程序耗时。
如果想要说的专业点:进程 是OS(操作系统) 分配资源的基本单位,线程 是执行调度的基本单位。
分配资源最重要的就是:每个进程都会拥有自己独立的内存空间,线程之间的调度执行都是在该内存空间之内,每个线程自身是没有独立的内存空间的。 说到这里,大家应该知道的是,每个应用程序其实都是可以开启多个进程的,如我们常用的QQ.exe,但是也有很多程序在开发的时候会在内部判断(只允许启用一个进程),如wechat.exe(这里指的是非破解版的那种)

线程

jvm中启动Thread,其实就是相当于启动了一个(OS)操作系统级别的线程,也就是属于内核态线程,是一个 重量级线程,而jvm相对于OS来说就是一个普通程序,仅仅是一个用户态。
Thread线程启动时需要和操作系统内核打交道,中间需要JVM调用向OS系统申请,(用户态>>内核态>>用户态),这样子才能够实现,所以从这里可以得出:jvm级别的线程是和os系统级别的线程一一对应的

纤程(JAVA语言目前对此还不算成熟,需要类库)

概念:

用户态的线程,线程中的线程,它是属于用户态里面的线程,所以也叫线程中的线程,切换和调度不需要经过OS(操作系统)

优势:

属于轻量级“线程” 因为不会惊动OS,占用资源很少,OS启用一个线程(重量级线程)需要差不多1M内存(基本上可以启动一万个左右,而且每次切换都需要消耗资源),而Fiber(纤程)仅需要4k,切换简单,可以启动很多个(10w+)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值