kotlin 协程

1.Job.join() //阻塞
fun test2(){
    runBlocking {
        val job:Job = GlobalScope.launch {
            val job2:  Job =  GlobalScope.launch(Dispatchers.IO) {
                println("in 2")
                delay(1000)
                println("in 2 end" )
            }

            println("before job2")
            println("in 0 end")
            job2.join() // 前后有别
        }
        job.join()


    }
}

2.no join() 非阻塞

fun test3(){
    //job.join()//blocking
    //no join() // unblocking
    runBlocking {
        val jjj = launch {
            println("world 1 start")
            delay(5000)
            println("world 1 end")
        }
        launch {
            println("world 2 start")
            delay(1000)
            println("world 2 end")
        }
        launch {
            println("world 3 start")
            delay(2000)
            println("world 3 end")
        }
    }
}

3.withContext,scope.launch{}.join()比较

感觉一样,都是阻塞

runBlocking{
  val job:Job = GlobalScope.launch {
      println("A--start:${System.currentTimeMillis()}")
      val job1 = withContext(Dispatchers.IO){
          println("job1:start:${System.currentTimeMillis()}")
          delay(1000)
          println("job1:end:${System.currentTimeMillis()}")
      }
      println("middle,${System.currentTimeMillis()}")

      val job2 = withContext((Dispatchers.IO))
      {
          println("job2:start:${System.currentTimeMillis()}")
          delay(1000)
          println("job2:end:${System.currentTimeMillis()}")
      }
  }
    job.join()
}

4.async 同步 await()阻塞等待

fun test4(){
    runBlocking {
        val jjj = async {
            println("start 1")
            delay(5000)
            println("end 1")
        }
        jjj.await()//until it's over

        async {
            println("start 2")
            delay(1000)
            println("end 2")
        }

        async {
            println("start 3")
            delay(500)
            println("end 3")
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lph009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值