kotlin协程初探

kotlin 协程初探

delay用法

想在 kotlin 的 main 函数中测试协程 delay 的作用,开始写法如下:

class TestDelay {

    companion object {
        @JvmStatic
        fun main(args: Array<String>) {
            println("begin")
            GlobalScope.launch {
                val chatToggleDelay: Pair<Long, Long> = 1000L to 5000L
                println("hello")
                chatToggleDelay.run {
                    println("Tom")
                    delay(Random.nextLong(first, second))
                    println("Jim")
                }
                println("world")
            }
            println("end")
            
         }
  	 }
}

运行结果如下

begin
end
hello
Tom
Process finished with exit code 0

delay 没有起到挂起协程的作用?有点蒙~
经同事指点,说是main函数执行结束后,进程关掉,其中开启的协程会被干掉,故修改如下验证:

class TestDelay {

    companion object {
        @JvmStatic
        fun main(args: Array<String>) {
            println("begin")
            GlobalScope.launch {
                val chatToggleDelay: Pair<Long, Long> = 1000L to 5000L
                println("hello")
                chatToggleDelay.run {
                    println("Tom")
                    delay(Random.nextLong(first, second))
                    println("Jim")
                }
                println("world")
            }
            println("end")
            Thread.sleep(6000) // 阻塞线程6s,保证main函数6s内不结束,进而保证上边的协程不被干掉
         }
  	 }
}

修改后打印结果如下:

begin
end
hello
Tom
Jim
world

Process finished with exit code 0

流程正确!
参考:https://blog.csdn.net/zhaoyanjun6/article/details/87867617

总结如下:

上述说明 kotlin 中的协程跟 java 中的线程不一样,具体不同,有待进一步了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值