kotlin for循环_Kotlin协程教程(3):操控协程

本文详细介绍了Kotlin协程的挂起、等待与取消、超时和上下文切换。挂起函数允许非阻塞暂停,提高线程资源利用率。使用join和await等待协程完成,cancel方法可取消协程。通过isActive判断取消状态,并在finally块中回收资源。withTimeout实现超时取消,withContext则用于切换协程执行上下文。
摘要由CSDN通过智能技术生成

3fd80bb5fd6badace9c0c8353f6127ad.png

在之前的文章中,已经讲了如何启动协程、协程的作用域是如何组织和工作的以及各种协程构造器(builder)的特性。

本篇将讲解对协程的各种操作,包括挂起、取消、超时、切换上下文等。

挂起

fun main()  {
    
    runBlocking(Dispatchers.Default) {
    
        for (i in 0 .. 10) {
    
            println("aaaaa ${Thread.currentThread().name}")
            delay(1000) // 这是一个挂起函数
            println("bbbbb ${Thread.currentThread().name}")
        }
    }
}

delay就是一个挂起函数,挂起的意思是:非阻塞的暂停,与之对应的就是阻塞(的暂停)。比如线程的方法Thread.sleep就是一个阻塞的方法。关于阻塞还是非阻塞,可以简单的理解为: 阻塞就是cpu不执行后面的代码,需要某种通知告诉线程继续执行。 非阻塞就是cpu依然在执行线程的代码,非阻塞的暂停只是通过用户态的程序逻辑让代码块不执行而已。

用图来表示线程阻塞的情况应该是这样:

839b700ddf811415b44646aa1406273a.png

而在协程中,非阻塞的情况应该是这样:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值