当前位置:网站首页>Kotlin - 协程上下文 CoroutineContext
Kotlin - 协程上下文 CoroutineContext
2022-07-26 19:31:00 【懒到死的程序员】
CoroutineContext
表示一个元素或元素集合的接口。它是有 Key(索引)的 Element实例集,每个 Element实例也是一个CoroutineContext,即集合中的每个元素也是集合。
- Job 任务:协程的实例,控制协程的生命周期(new、active、completing、completed、cancelling、cancelled)。
- CoroutineDispather 协程调度器:给指定线程分发协程任务(IO、Default、Main、Unconfined)。
- CoroutineName 协程名称:调试的时候用(默认为coroutine)。
- CoroutineExceptionHandler 协程异常处理器:处理未被捕获的异常。
添加元素
不存在对应Key的元素直接被添加,已存在对应Key元素会被覆盖。
//【情况1】只添加CoroutineName
val cc1: CoroutineContext = CoroutineName("One")
println(cc1[CoroutineName]?.name) //打印:One
println(cc1[Job]?.isActive) //打印:null
//【情况2】只添加Job
val cc2: CoroutineContext = Job()
println(cc2[CoroutineName]?.name) //打印:null
println(cc2[Job]?.isActive) //打印:true, 因为 “Active” 是job创建后的初始状态
//【情况3】合并,未覆盖
val cc3 = cc1 + cc2
println(cc3[CoroutineName]?.name) //打印:One
println(cc3[Job]?.isActive) //打印:true
//【情况4】合并,有覆盖
val cc4: CoroutineContext = CoroutineName("Four")
val cc5: CoroutineContext = CoroutineName("Five")
val cc6 = cc4 + cc5
println(cc6[CoroutineName]?.name) //打印:Five删除元素
减号操作符没有被重载,因为操作符行为应该与其名称一致。
val cc1 = CoroutineName("One") + Job()
println(cc1[CoroutineName]?.name) //打印:One
println(cc1[Job]?.isActive) //打印:true
val cc2 = cc1.minusKey(CoroutineName)
println(cc1[CoroutineName]?.name) //打印:null
println(cc1[Job]?.isActive) //打印:true查找元素
边栏推荐
猜你喜欢

Using questpdf operation to generate PDF is faster and more efficient!

贴合课标新方向 猿辅导打造特色新概念内容体系

静音台式风扇芯片-DLTAP703SD-杰力科创

EtherCAT synchronization mode

Week 6 Convolutional Neural Networks (CNNs)

Array operations add, delete, modify, and query

游戏合作伙伴专题:BreederDAO 与 Ultiverse 建立了一个新的元宇宙

数字化工厂的优势有哪些

Read the high-performance queue channel in.Net

SQL injection
随机推荐
.NET GC工作流程
Kingbasees SQL language reference manual of Jincang database (19. SQL statement: drop table to load)
任务二 kaggle糖尿病检测
DevOps 实践多年,最痛的居然是?
go+mysql+redis+vue3简单聊室,第5弹:使用消息队列和定时任务同步消息到mysql
潘多尼亚精灵 VoxEdit 创作大赛
C# 客户端程序调用外部程序的3种实现方法
MySQL之InnoDB引擎(五)
numpy.put()
开源 | AREX-携程无代码侵入的流量回放实践
I tried many report tools and finally found a report based on Net 6
tf.GraphKeys
Silent desktop fan chip dltap703sd Jericho
TableWidget
numpy.newaxis
numpy.zeros_like
Exchange 2010 SSL certificate installation document
smoothscroll-polyfill插件的用法
谷歌的新编程语言被称为 Carbon
A little cool, explore space with.Net Maui
