美文网首页
协程简单理解

协程简单理解

作者: yunhen | 来源:发表于2024-04-16 14:17 被阅读0次
suspend fun sf1(){
    Log.e(MainActivity.TAG,"testSuspendFun1_sf1_04,当前线程:${Thread.currentThread().name}")
//    delay(3000)
    var x = 0;
    for(i in 1..1000000000){
        x += i
    }
    Log.e(MainActivity.TAG,"testSuspendFun1_sf1_05,当前线程:${Thread.currentThread().name}")
}

launch

fun testSuspendFun1(){
    val mScope = MainScope()

    //执行顺序 1
    Log.e(MainActivity.TAG,"testSuspendFun1_01,当前线程:${Thread.currentThread().name}")
    mScope.launch {
        //创建并运行一个异步 ,但不是切换线程
        //执行顺序 3
        Log.e(MainActivity.TAG,"testSuspendFun1_03,当前线程:${Thread.currentThread().name}")
        //执行顺序 4
        sf1()

        //执行顺序 5
        Log.e(MainActivity.TAG,"testSuspendFun1_06,当前线程:${Thread.currentThread().name}")
    }
    //执行顺序 2
    Log.e(MainActivity.TAG,"testSuspendFun1_02,当前线程:${Thread.currentThread().name}")


}


async

fun testSuspendFun2(){
    val mScope = MainScope()
    //执行顺序 1
    Log.e(MainActivity.TAG,"testSuspendFun2,01,当前线程:${Thread.currentThread().name}")
    val job = mScope.launch {
        //创建并运行一个异步 ,但不是切换线程
        //执行顺序 3
        Log.e(MainActivity.TAG,"testSuspendFun2,03,当前线程:${Thread.currentThread().name}")


        val deferred = this.async {
            //创建一个异步,暂时不运行
            //执行顺序 6
            Log.e(MainActivity.TAG,"testSuspendFun2,06,当前线程:${Thread.currentThread().name}")
            sf1()
            1
        }
        //执行顺序 4
        Log.e(MainActivity.TAG,"testSuspendFun2,04,当前线程:${Thread.currentThread().name}")
        sf1()
        //执行顺序 5
        Log.e(MainActivity.TAG,"testSuspendFun2,05,当前线程:${Thread.currentThread().name}")
        val result = deferred.await()

        //执行顺序 7
        Log.e(MainActivity.TAG,"testSuspendFun2,07,当前线程:${Thread.currentThread().name}")
    }


    //执行顺序 2
    Log.e(MainActivity.TAG,"testSuspendFun2,02,当前线程:${Thread.currentThread().name}")

}

相关文章

  • 协程简单理解

    带着以下几个问题去简单理解协程原理。1.协程到底是怎么创建和启动的?简略版可参考这篇:Kotlin协程create...

  • 协程

    协程 1.Kotlin 中的协程是什么? 简单理解:一般程序会有一个主进程,主进程中可能含有多个线程。而协程,是线...

  • 入门-协程(Coroutine)

    使用协程需要引入 1.什么是协程 官方文档(本质上,协程是轻量级的线程。) 个人理解:协程是一个线程框架,协程就是...

  • 理解协程

    一、进程、线程、协程的区别 进程:操作系统中分配资源的基本单位 线程:操作系统中调度资源的基本单位 协程:比线程更...

  • Python协程可是神器!不知道哪些人居然说是鸡肋!最全教程合集

    了解协程的过程 先通过一个简单的协程的例子理解: 对上述例子的分析: yield 的右边没有表达式,所以这里默认产...

  • Kotlin协程使用

    目录 协程的用法 协程同步异步请求与Rxjava,原生写法的区别与优势 对于协程的理解 1.协程的用法 在安卓中添...

  • Kotlin协程(入门向)

    最近在学习kotlin的协程,分享一下学习经验! 〇、什么是协程? 官方解释: 协程是轻量级的线程。 个人理解:协...

  • Kotlin协程

    最近在学习kotlin的协程,分享一下学习经验! 〇、什么是协程? 官方解释: 协程是轻量级的线程。 个人理解:协...

  • Generator和协程

    Generator与协程什么是协程协程是一种程序运行的方式,可以理解成“协作的线程”或“协作的函数”。协程既可以用...

  • [libco] 协程栈空间

    协程“栈”空间,有独立栈和共享栈,重点理解一下协程共享栈。 文章来源:[libco] 协程栈空间[https://...

网友评论

      本文标题:协程简单理解

      本文链接:https://www.haomeiwen.com/subject/gxvjxjtx.html