kotlin协程学习笔记

本文深入探讨了Kotlin中协程的使用,包括launch与async的区别,如何利用它们执行并发任务,以及withContext函数的使用场景。通过示例代码展示了协程在实际应用中的优势,如异步操作和资源管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kotlin协程

  companion object {
        @JvmStatic
        fun main(args: Array<String>) = runBlocking {
            val p = StringBuilder()
            p.append("1")
            var list = ArrayList<String>()
            println("""开始""")
            println("" + list!!.size)
            println("" + list?.size)

            launch {
                val a = GlobalScope.launch {
                    val thread1 = withContext(Dispatchers.IO) {
                        println("thread1" + Thread.currentThread().name)
                        Thread.sleep(1000)
                    }

                    val thread2 = withContext(Dispatchers.Unconfined) {
                        println("thread2" + Thread.currentThread().name)
                    }
                }

                val b = async {
                    Thread.sleep(5000)
                    println("async run")
                }
                a.join()
                println("I m done")
            }
            println("finish")
        }
    }

创建两个协程 a ,b a有两个子耗时的suspend函数

这句话我是在中文社区看到的 不是很理解,是不是翻译错了 父协程并不会主动等待子协程完成
async{}是可以开启一个异步协程的,相对于launch{},async{}返回的是带返回值的Job,public interface Deferred : Job T就是返回值,通过await获得该返回值。

launch{
val a = async{ 耗时1s …}.await();
val b = async{ 耗时5s …}.await();
}
}
后续继续学习补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值