使用 kotlinx.coroutines 初体验

       在kotlin 中,没有l wait 和syn 两个关键字,所以推出了协程 这个概念,在 现在kotlin 使用越加频繁的时候协程也推出了一个开源的使用框架 kotlinx.coroutines 

        但是我在使用的时候发生了许多的问题,在Github的使用实例中说可以使用这个实例

suspend fun main() = coroutineScope {
    launch { 
       delay(1000)
       println("Kotlin Coroutines World!") 
    }
    println("Hello")
}

,但是却出现了问题

使用 kotlinx.coroutines 初体验_第1张图片

但是我却在kotlin 的官方文档中找到了答案

 

 

import kotlinx.coroutines.*

fun main() {
    GlobalScope.launch { // launch a new coroutine in background and continue
        delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
        println("World!") // print after delay
    }
    println("Hello,") // main thread continues while coroutine is delayed
    Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}

原来,在Android studio 3.1 的时候协程 就改变了调用的方式,不再使用 launch  的方式进行调用协程,反而是 使用 

GlobalScope.launch 的方式进行使用,而且需要注意的是如果 使用 GlobalScope.launch 的方式进行协程的调用,那么他会允许在子线程中 ,如图

使用 kotlinx.coroutines 初体验_第2张图片

他的默认调用是这个样子的

但是如果需要运行在主线程所以我们需要这样写

 

       GlobalScope.launch(EmptyCoroutineContext, CoroutineStart.UNDISPATCHED) {
//             delay(1000)
             println("当前的线程是   " + Thread.currentThread().name)
         }

而且需要注意的是 如果调用  delay 这个方法会切换到子线程,如果要在主线程运行,需要使用  Thread.sleep 进行调用

你可能感兴趣的:(使用 kotlinx.coroutines 初体验)