kotlin-協程-lzf
阿新 • • 發佈:2018-11-09
協程有兩個概念,一個是協程作用域,第二個是協程,虛擬機器首先會載入協程作用域包括子作用域,因此在各個作用域沒有delay的情況下,從上到下執行作用域中的程式碼,執行完畢後再按照從上到下的順序執行協程中的程式碼
fun main1() = runBlocking { var order = 1 // this: CoroutineScope for (i: Int in 1..300) println("first$i:::${order++}") launch { // delay(200L) // println("Task from runBlocking") delay(2000) for (i: Int in 1..300) println("fourth$i:::${order++}") } for (i: Int in 1..300) println("second$i:::${order++}") coroutineScope { // 建立⼀個新的協程作⽤域 launch { for (i: Int in 1..300) println("fifth$i:::${order++}") // delay(500L) // println("Task from nested launch") // delay(100L) // println("Task from coroutine scope") // 該⾏將在巢狀啟動之前執⾏列印 } for (i: Int in 1..300) println("third$i:::${order++}") // println("Coroutine scope is over") // 該⾏將在巢狀結束之後才會被打 } for (i: Int in 1..300) println("sixth$i:::${order++}") }
協程作用域和協程中的程式碼執行順序
first second third fourth fifth sixth