关于Kotlin中“协程一种轻量级线程”的解释

本文探讨了Kotlin协程被称为轻量级线程的原因,通过分析源码揭示了其与线程的关系。协程在内存消耗上较线程有优势,但并非完全独立于线程,而是基于线程的高级抽象。文章指出,协程是线程的封装和管理工具,提供了一种更高效地利用线程的机制,而非直接替代线程。同时,协程的轻量级特性主要体现在使用层面,性能上与线程池相似。
摘要由CSDN通过智能技术生成

前言

相信很多人都听过或者看到过这样一种说法“协程是一种轻量级的线程”。以下文档中都有类似的描述:

  1. Kotlin中文网-协程-基础-第一个协程程序

    本质上,协程是轻量级的线程。

  2. Kotlin英文官网对应位置

    Essentially, coroutines are light-weight threads.

显然,翻译很准确

问题在哪

相信很多人了解过Kt协程都看过上线官方的这个描述。

因而很多人觉得协程比线程牛逼,因为是”轻量级“。所以有人觉得协程是另一种方式实现的类似线程的功能,所以产生了以下对话:

A:Kotlin协程和线程有啥区别

B:协程是对线程操作的封装,通过状态机和回调实现以同步样式代码书写异步逻辑,消除回调低于,更便于理解,巴拉巴拉。。。

A:内存消耗上有啥区别?

B:内存消耗上如果线程和协程比的话协程更占优势,因为协程底层实现是类似线程池,有线程复用,所以更省内存,如果是线程池和协程比较,实际上并无太大区别。

A:这和我的理解不太一样呢,我的理解是协程是通过编译器实现的,所以比线程更节省内存,比如我开100w个线程和100w个协程,线程会oom,协程不会

协程是什么

广义上的协程是一个**概念(协程是一种非抢占式或者说协作式的计算机程序并发调度)**而不是一个具体的框架。

Kt中的协程是Kt对协程概念的一种具体实现。


Kt协程和线程

Kt协程被官方描述为轻量级线程。

那它跟线程到底是什么关系呢,是包含封装关系还是功能类似的两种不同的实现方式呢?

康康源码?show me the fucking code!!

协程的切换线程必然要使用到Dispatchers中的几个变量

public actual object Dispatchers {
   
    @JvmStatic
    public actual val Default: CoroutineDispatcher = createDefaultDispatcher()

   
    @JvmStatic
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值