//1.开启一个协程 private fun GlobalScopes() { GlobalScope.launch {//在后台启动一个新协程 delay(3000)//非阻塞延迟3秒 println("你好!") } println("嗨,") Thread.sleep(3000)//主线程阻塞3秒 } //2.主线程阻塞 private fun RunBlocking() { GlobalScope.launch {//在后台启动一个新协程 delay(3000)//非阻塞延迟3秒 println("你好!") } println("嗨,") runBlocking {//阻塞主线程 println("runBlocking.....") delay(1000)//非阻塞延迟3秒 println("runBlocking...end") } println("运行结束") } //3.主线程阻塞 job.join fun mainJoin()= runBlocking { var job=launch { delay(3000) println("nihao") } println("start") job.join()//等待协程先完成 再执行后面的 println("end") } //4.coroutineScope fun mainCoroutineScope()= runBlocking { launch { println("launch ...") delay(2000) println("launch ... end") } coroutineScope {//挂起函数 子协程结束后,才会结束自己 launch { delay(500L) println("coroutineScope ...launch") } println("coroutineScope ...") delay(2000) println("coroutineScope ... end") } } //5.重构 fun mainSuspend()= runBlocking { launch { doThing()//提取函数重构 } println("end") } suspend fun doThing() {//suspend修饰符 delay(1000) println("doThing") } //6.守护线程 fun mainRepeat()= runBlocking { GlobalScope.launch {//全局协程类似于守护线程 当主线程消亡时,守护线程也将消亡 repeat(10){ i-> println("第$i") delay(1000) println("repeat....$i") } } delay(1300L)// just quit after delay }
kotlin 协程基础
最新推荐文章于 2023-10-09 12:00:00 发布