常用的CoroutineScope使用

常用的一些:

  • GlobalScope.launch{}: 一般用于测试
  • delay(): 类似于Thread.sleep(),但是delay()不会阻塞线程
  • runBlocking{}: 阻塞当前线程,直到协程结束.
  • coroutineScope{}: 不阻塞当前线程,直到这个作用域下的协程都执行完,才往下执行.
  • withTimeout(1300L) {}: 超时取消协程
  • CoroutineScope
fun main() {
    runBlocking { // this: CoroutineScope
        test1()
    }

    runBlocking {
        test2()
    }
}

private suspend fun test2() {
    withTimeout(1300L) {
        repeat(1000) { i ->
            println("I'm sleeping $i ...")
            delay(500L)
        }
    }
}


// test for coroutineScope
private suspend fun test1() {
    coroutineScope {
        launch {
            delay(200L)
            println("Task from runBlocking")
        }
        coroutineScope { // 创建一个协程作用域
            launch {
                delay(500L)
                println("Task from nested launch")
            }

            delay(100L)
            println("Task from coroutine scope") // 这一行会在内嵌 launch 之前输出
        }
        println ("Coroutine scope is over")
    }
    println ("Coroutine2 scope is over")
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值