03 2021 档案

摘要:select 表达式(实验性的) select 表达式可以同时等待多个挂起函数,并 选择 第⼀个可⽤的。 在通道中 select 我们现在有两个字符串⽣产者:fizz 和 buzz 。其中 fizz 每 300 毫秒⽣成⼀个“Fizz”字符串: fun CoroutineScope.fizz() = 阅读全文
posted @ 2021-03-24 14:01 王世桢 阅读(116) 评论(0) 推荐(0) 编辑
摘要:共享的可变状态与并发 协程可⽤多线程调度器(⽐如默认的 Dispatchers.Default)并发执⾏。这样就可以提出所有常⻅的并发 问题。主要的问题是同步访问共享的可变状态。协程领域对这个问题的⼀些解决⽅案类似于多线程领域 中的解决⽅案,但其它解决⽅案则是独⼀⽆⼆的。 问题 我们启动⼀百个协程, 阅读全文
posted @ 2021-03-24 13:53 王世桢 阅读(145) 评论(0) 推荐(0) 编辑
摘要:异常处理 本节内容涵盖了异常处理与在异常上取消。我们已经知道取消协程会在挂起点抛出 CancellationException 并且它会被协程的机制所忽略。在这⾥我们会看看在取消过程中抛出异常或同 ⼀个协程的多个⼦协程抛出异常时会发⽣什么。 异常的传播 协程构建器有两种形式:⾃动传播异常(launc 阅读全文
posted @ 2021-03-24 13:40 王世桢 阅读(104) 评论(0) 推荐(0) 编辑
摘要:通道:延期的值提供了⼀种便捷的⽅法使单个值在多个协程之间进⾏相互传输。通道提供了⼀种在流中传输 值的⽅法。 通道基础: ⼀个 Channel 是⼀个和 BlockingQueue ⾮常相似的概念。其中⼀个不同是它代替了阻塞的 put 操 作并提供了挂起的 send,还替代了阻塞的 take 操作并提 阅读全文
posted @ 2021-03-17 23:00 王世桢 阅读(284) 评论(0) 推荐(0) 编辑
摘要:异步流 挂起函数可以异步的返回单个值,但是该如何异步返回多个计算好的值呢?这正是 Kotlin 流(Flow)的 ⽤武之地。 表示多个值 在 Kotlin 中可以使⽤集合来表⽰多个值。⽐如说,我们可以拥有⼀个函数 foo() ,它返回⼀个包含三 个数字的 List,然后使⽤ forEach 打印它们 阅读全文
posted @ 2021-03-17 21:47 王世桢 阅读(573) 评论(0) 推荐(1) 编辑
摘要:协程上下⽂与调度器 协程总是运⾏在⼀些以 CoroutineContext 类型为代表的上下⽂中,它们被定义在了 Kotlin 的标准库 ⾥。 协程上下⽂是各种不同元素的集合。其中主元素是协程中的 Job,我们在前⾯的⽂档中⻅过它以及它的 调度器,⽽本⽂将对它进⾏介绍。 调度器与线程 协程上下⽂包含 阅读全文
posted @ 2021-03-17 17:39 王世桢 阅读(585) 评论(0) 推荐(0) 编辑
摘要:默认顺序调用 假设我们在不同的地⽅定义了两个进⾏某种调⽤远程服务或者进⾏计算的挂起函数。我们只假设它们都是有⽤的,但是实际上它们在这个⽰例中只是为了该⽬的⽽延迟了⼀秒钟: suspend fun doSomethingUsefulOne(): Int { delay(1000L) // 假设我们在这 阅读全文
posted @ 2021-03-17 16:23 王世桢 阅读(543) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示