kotlin channel使用注意点
kotlinx.coroutines.channels.ClosedSendChannelException: Channel was closed
at kotlinx.coroutines.channels.Closed.getSendException(AbstractChannel.kt:1107)
at kotlinx.coroutines.channels.AbstractSendChannel.helpCloseAndResumeWithSendException(AbstractChannel.kt:230)
at kotlinx.coroutines.channels.AbstractSendChannel.access$helpCloseAndResumeWithSendException(AbstractChannel.kt:19)
at kotlinx.coroutines.channels.AbstractSendChannel.sendSuspend(AbstractChannel.kt:220)
at kotlinx.coroutines.channels.AbstractSendChannel.send(AbstractChannel.kt:136)
at kotlinx.coroutines.channels.ChannelCoroutine.send(Unknown Source:2)
因为 channel在另一个flow/channel里, 而kotlin的 job与channel 都是带 group概念的, 一个顶层job/channel关闭,会导致在其中的其他 也关闭
flow/channelFlow不能用时,可以使用 callbackFlow
https://blog.csdn.net/androiddevs/article/details/116078525
channelFlow 可以在不同的 CoroutineContext 或协程之外使用 offer(trySend) 方法发送数据。但一定要在block块内添加
awaitClose { channel.close(Throwable("完成")) }
kotlin channel使用注意点的更多相关文章
- Kotlin协程通信机制: Channel
Coroutines Channels Java中的多线程通信, 总会涉及到共享状态(shared mutable state)的读写, 有同步, 死锁等问题要处理. 协程中的Channel用于协程间 ...
- 探究高级的Kotlin Coroutines知识
要说程序如何从简单走向复杂, 线程的引入必然功不可没, 当我们期望利用线程来提升程序效能的过程中, 处理线程的方式也发生了从原始时代向科技时代发生了一步一步的进化, 正如我们的Elisha大神所著文章 ...
- Kotlin 资料
https://kotlinlang.org/docs/reference/ 官方 https://github.com/JetBrains/kotlin/releases Kotlin SDK ...
- kotlin第一个项目的搭建
怎么在Android Studio中使用Kotlin? 1.使用Android Studio的插件 2.将Android Studio升级到3.0版本:目前不推荐,因为3.0的版本目前还是Dev Ch ...
- Kotlin Coroutines在Android中的实践
Coroutines在Android中的实践 前面两篇文章讲了协程的基础知识和协程的通信. 见: Kotlin Coroutines不复杂, 我来帮你理一理 Kotlin协程通信机制: Channel ...
- 【从零开始撸一个App】Kotlin
工欲善其事必先利其器.像我们从零开始撸一个App的话,选择最合适的语言是首要任务.如果你跟我一样对Java蹒跚的步态和僵硬的语法颇感无奈,那么Kotlin在很大程度上不会令你失望.虽然为了符合JVM规 ...
- Kotlin/Native 用KMM写Flutter插件
一.用KMM写Flutter插件 Google官方有一个写Flutter例子How to write a Flutter plugin,这里把Google plugin_codelab 例子改成用KM ...
- Kotlin 协程一 —— 全面了解 Kotlin 协程
一.协程的一些前置知识 1.1 进程和线程 1.1.1基本定义 1.1.2为什么要有线程 1.1.3 进程与线程的区别 1.2 协作式与抢占式 1.2.1 协作式 1.2.2 抢占式 1.3 协程 二 ...
- rxjava回调地狱-kotlin协程来帮忙
本文探讨的是在tomcat服务端接口编程中, 异步servlet场景下( 参考我另外一个文章),用rxjava来改造接口为全流程异步方式 好处不用说 tomcat的worker线程利用率大幅提高,接口 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
随机推荐
- uniapp开发使用 web-view APP 与 H5 (vue)通信
需求:这边是uniapp开发的APP 需要内嵌H5(vue),就得使用web-view跳转网页 H5端 在vue的index,html文件引入web-view的插件 <script type= ...
- 野火STM32 ADC独立模式单通道采集实验意外
1 //about calibration 2 //ADC_ResetCalibration(ADC1); 3 //while(ADC_GetResetCalibrationStatus(ADC1) ...
- tcl编程
目录 0. 基础语法 0.1 普通变量 0.2 list, 列表 0.3 array, 数组 0.4 循环 0.4.1 for 0.4.2 foreach 1. 从命令行获取参数(好像并不是很强大) ...
- JS学习-Web Workers API接口
Web Workers API接口 通过使用Web Workers,Web应用程序可以在独立于主线程的后台线程中,运行一个脚本操作.这样做的好处是可以在独立线程中执行费时的处理任务,从而允许主线程(通 ...
- maven项目pom.xml报未找到指定路径文件
解决方法: 错误环境:Tomcat7 + Eclipse + Maven + Spring + SpringMvc + Mybatis 错误描述: 错误解决步骤: 1.找到eclipse的projec ...
- 【Java】Object
Object转Map import com.alibaba.fastjson.JSON; import com.runsky.utils.JsonUtils; String objectToJson ...
- Linux 中设置静态的IP
Topic (What i going to write) Setting the static Ip address in linux Main Information Firstly use CD ...
- python_pandas常用操作
df:任意的Pandas DataFrame对象 s:任意的Pandas Series对象 raw:行标签 col:列标签 导入依赖包: import pandas as pd import nump ...
- JS-变量存储
1.存储(变量)JS中变量是存在栈内存中JS中的内存分两种:栈内存.堆内存 栈内存:存放变量 堆内存:存代码块(object和function) var fn=function()和function ...
- Java语言打印空心菱形
打印空心菱形如果一开始觉得比较困难的话,那么不妨分成几个步骤走完成菱形的打印. 1.先打印一个直角三角形(都是由星星组成的) 代码如下: import java.util.Scanner;//导入Sc ...