
协程 Kotlin
文章平均质量分 82
速通 - 协程
函数式编程(0x2)
协程02 - 基本API介绍
协程03 - 取消与超时
协程04 - 挂起函数的配合
协程05 - 调度器
协程06 - 异常处理
二手的程序员
这个作者很懒,什么都没留下…
展开
-
协程06 - 异常处理
在协程中,异常的传播形式有两种:一种是自动传播(launch或actor一种是向用户暴露该异常(async或produce这两种的区别在于,前者的异常传递过程是层层向上传递(如果异常没有被捕获),而后者将不会向上传递,会在调用处直接暴漏。原创 2023-12-08 09:35:52 · 1029 阅读 · 0 评论 -
协程05 - 调度器
当 launch 函数调用的时候,它会从 CoroutineScope 中继承 context,在上面的例子中,它继承的是 runBlocking中的 context,所以运行在主线程。Dispatchers.Default 使用一个后台的线程池来运行。newSingleThreadContext 每次会创建一个单独的线程来运行,最好是保存起来,复用同一个。Dispatchers.Unconfined 这个就比较神奇,它会让线程运行在调用者线程,但是只到第一个挂起点。原创 2023-12-08 09:49:32 · 358 阅读 · 0 评论 -
协程04 - 挂起函数的配合
一般我们使用协程,都会让协程运行在子线程上,所以当协程多起来的时候,协程之间的合作与通信就是一个蛋疼的问题了。好在有了 Channel,它就类似于一个 BlockingQueue,用来处理生产者与消费者之间的同步问题。async 与 launch 差不多,不过,launch 返回的是一个 Job,并不携带任何结果值,而 async 返回的是一个延迟(Deferred),一个轻量级的非阻塞Future,代表着稍后提供结果。Channel,这个玩意继承了上面两个,想来是一个组合体,一个对象可以实现通信。原创 2023-12-07 10:25:07 · 389 阅读 · 0 评论 -
协程03 - 取消与超时
在应用程序中,我们需要对协程进行细粒度控制。例如,用户可能已经关闭了启动协程的页面,不再需要其结果,因此可以取消协程。这个很简单。原创 2023-12-07 10:21:48 · 437 阅读 · 0 评论 -
协程02 - 基本API介绍
之前写了一篇协程速通,发现在阅读协程代码的时候还是很会卡住,细想了一下,发现是很多协程的招式看不懂。所以,非常有必要学习并理解一下基本的API,以及API里面的一些运作方式。原创 2023-12-06 09:38:43 · 834 阅读 · 0 评论 -
函数式编程(0x2)
下一篇应该要很久了,由于个人原因,函数式编程的优先级降低,jvm的优先级上升。上一篇我们说过,函数是一个很简单的东西:你给它一个input,它给你一个output,且不会对function的外界产生影响。原创 2023-12-04 12:15:23 · 798 阅读 · 0 评论 -
函数式编程(0x1)
f(x)是从数学里面借过来的一个概念。,这个函数就是将任意的输入 x,变成输出 x * 2。在函数里面,一个重要的特征就是,我们放一个东西进去,然后它给我们一个结果,没有其他任何的多余动作。假设我们将函数看成一个黑盒子,那么它就是这样的:这个黑盒子在工作的时候,不会对外界产生任何影响,也就是我们常说的没有副作用(No Side Effects)。在这个例子中,x在函数执行后是多少呢?当然还是x原来的值,它不会变化。原创 2023-12-01 10:47:43 · 788 阅读 · 0 评论 -
速通 - 协程
协程的概念最核心的点就是一段程序能够被挂起,稍后在挂起的位置恢复,挂起和恢复是由使用者控制的。原创 2023-11-22 09:47:45 · 821 阅读 · 0 评论