Kotlin 协程

本文深入探讨Kotlin协程,包括其作为轻量级线程的概念,基本用法如launch和delay,结构化并发的原理,提取函数进行代码重构,以及Scope构造器如runBlocking和coroutineScope的差异。通过示例展示了协程的并发执行及Job对象的使用,强调协程的资源效率,是解决并发问题的有效工具。
摘要由CSDN通过智能技术生成

Kotlin 协程(一)

1 什么是协程

协程可以看作轻量级的线程,可以在一个线程中挂起执行并在另一个线程中恢复,它在概念上与线程类似,但在实际使用时有很大差别

2 基本用法

fun main() = runBlocking {
    // this: CoroutineScope
    launch {
    // launch a new coroutine and continue
        delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
        println("World!") // print after delay
    }
    println("Hello") // main coroutine continues while a previous one is delayed
} 	

运行结果

launch是协程的构造器,它与作用域里的代码同时启动一个新的协程,该协程独立工作,这也是为什么先打印出 “Hello”
delay是特殊的挂起功能,可以将协程暂停执行一段时间,挂起协程并不会阻塞底层线程的执行,但是允许其他协程使用和运行底层线程执行代码
runBlocking也是协程构造器,它连接main()中协程作用域和非协程作用域,在IDE中会在在 runBlocking 左大括号之后的 CoroutineScope 提示。如果忘记或删除runBlocking会报error,因为

launch必须在CoroutineScope中声明

runBlocking的名字意味着运行它的线程(本例中是主线程)会在运行期间被阻塞,直到它里面的所有协程都执行完毕。在实际开发中很少使用runBlocking,因为线程是很宝贵的资源,阻塞它们通常是低效的

3 结构化并发

协程遵循结构化并发的原则,这意味着新创建的协程只能运行在特定的CoroutineScope中,这个范围界定了协程的生命周期。上面的runBlocking就构建了一个相应的scope,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值