美文网首页
kotlin有关问题

kotlin有关问题

作者: 惜鸟 | 来源:发表于2019-10-12 15:30 被阅读0次

协程是什么

首先, 协程是一片包含特定逻辑的代码块, 这个代码块可以调度到不同的线程上执行;

其次, 协程一种环境, 在这种环境里, 方法可以被等待执行, 有了运算结果之后才返回, 在等待期间, 承载协程的线程资源可以被别的地方使用.

第三, 协程是一个独立于运行流程的逻辑流程, 协程里面的步骤, 无论是同步的还是异步的, 都是线性(从前到后依次完成的).

协程和线程区别与关系

线程和协程的目的本质上存在差异:

线程的目的是提高CPU资源使用率, 使多个任务得以并行的运行, 所以线程是为了服务于机器的.

协程的目的是为了让多个任务之间更好的协作, 主要体现在代码逻辑上, 所以协程是为了服务于人的, 写代码的人. (也有可能结果会能提升资源的利用率, 但并不是原始目的)

在调度上, 协程跟线程也不同:

线程的调度是系统完成的, 一般是抢占式的, 根据优先级来分配, 是空分复用.

协程的调度是开发者根据程序逻辑指定好的, 在不同的时期把资源合理的分配给不同的任务, 是时分复用的.

作用上的不同:

协程确保了代码逻辑是顺序的, 不管同步操作要是异步操作, 前一个完成, 后一个才会开始.

线程可以被调度到CPU上执行, 这样代码才能真正运行起来.

协程与线程的关系:

协程并不是取代线程, 而且抽象于线程之上, 线程是被分割的CPU资源, 协程是组织好的代码流程, 协程需要线程来承载运行, 线程是协程的资源, 但协程不会直接使用线程, 协程直接利用的是执行器(Interceptor), 执行器可以关联任意线程或线程池, 可以使当前线程, UI线程, 或新建新程. 可总结如下:

线程是协程的资源.

协程通过Interceptor来间接使用线程这个资源.

参考文档:kotlin协程理解

相关文章

网友评论

      本文标题:kotlin有关问题

      本文链接:https://www.haomeiwen.com/subject/oysgkftx.html