美文网首页
协程的启动与取消

协程的启动与取消

作者: 因为我的心 | 来源:发表于2021-09-02 11:48 被阅读0次

1、协程构建器

  • launch与async构建器都用来启动新协程
  • launch,返回一个Job并且不附带任何结果值;
  • async,返回一个Deferred,Deferred也是一个Job,可以使用.await()在一个延期的值上得到它的最终结果;
  • 等待一个作业
  • join与await
  • 组合并发

2、协程的启动模式

  • DEFAULT:协程创建后,立即开始调度,在调度前如果协程取消,其将直接进入取消响应的状态;
  • ATOMIC:协程创建后,立即开始调度,协程执行到第一个挂起点之前不响应取消;
  • LAZY:只有协程被需要时,包括主动调用协程的start、join或者await等函数时才会开始调度,如果调度前就被取消,那么该协程直接进入异常结束状态;
  • UNDISPATCHED:协程创建后立即在当前函数调用栈中执行,直到遇到第一个真正挂起的点;

3、协程的作用域构建器

coroutineScope与runBlocking区别:

  • runBlocking是常规函数,而coroutineScope是挂起函数。
  • 它们都会等待其协程体以及所有子协程结束,主要区别在于runBlocking方法会阻塞当前线程来等待,而coroutineScope只是挂起,会释放底层线程用于其它用途。

4、coroutineScope与supervisorScope区别:

  • coroutineScope:一个协程失败了,所有其他兄弟协程也会被取消。
  • supervisorScope:一个协程失败了,不会影响其他兄弟协程。

5、Job对象

图片.png

6、Job的生命周期

图片.png

7、协程的取消

图片.png

8、CUP密集型任务取消

图片.png

9、协程取消的副作用

图片.png

10、不能取消的任务

图片.png

11、超时任务

图片.png

相关文章

  • 协程

    一、取消与超时 1.线程取消 2.Job Job是标准库中启动协程后返回的对象,代表着协程本次作业。我们可以判断协...

  • Kotlin-协程核心库分析-Job父子取消

    父Job取消时如何取消子Job 父协程完成结束 我们看下子协程如何被取消的。首先我们需要知道 子协程启动的时候会放...

  • 一学就会的协程使用——基础篇(三)初遇取消

    1. 引言 协程支持取消,也就是说,启动一个协程后而且在协程结束前已经不希望协程再执行代码了,可以对协程进行取消。...

  • Kotlin-协程核心库分析-Job简述

    Job是标准库中启动协程后返回的对象,代表着协程本次作业。我们可以判断协程是否结束,是否取消,是否完成并且可以取消...

  • 协程的启动与取消

    1、协程构建器 launch与async构建器都用来启动新协程launch,返回一个Job并且不附带任何结果值;a...

  • 5.协程的取消

    1.协程取消 一个用户关闭了一个启动了协程的界面,那么现在协程的执行结果已经不再被需要了,这就需要用到协程的取消,...

  • kotlin 协程之取消协程

    取消作用域会取消它的子协程。 被取消的子协程并不会影响其余兄弟协程。 协程通过抛出一个特殊的异常Cancellat...

  • 破解 Kotlin 协程(5) - 协程取消篇

    关键词:Kotlin 协程 协程取消 任务停止 协程的任务的取消需要靠协程内部调用的协作支持,这就类似于我们线程中...

  • kotlin协程的取消

    对于可被取消的协程和不可被取消的协程。 https://www.kotlincn.net/docs/referen...

  • kotlin--协程的启动和取消

    一、协程的启动 1.launch与async构建器都用来启动新协程 launch:我们之前已经使用过了Global...

网友评论

      本文标题:协程的启动与取消

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