Kotlin withContext详解与suspend和inline

这篇具有很好参考价值的文章主要介绍了Kotlin withContext详解与suspend和inline。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 withContext

package com.tiger.mykotlinapp.scope

import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext

@OptIn(ExperimentalStdlibApi::class)
fun main() {
    runBlocking(Dispatchers.IO) {

        println(coroutineContext.get(CoroutineDispatcher).toString())
        launch {

            //挂起操作,阻塞当前协程
            val res = withContext(Dispatchers.Default) {
                delay(2000)
                println(coroutineContext.get(CoroutineDispatcher).toString())
                1
            }

        }

      
        println(coroutineContext.get(CoroutineDispatcher).toString())


    }


}

suspend

package com.tiger.mykotlinapp.scope

import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

@OptIn(ExperimentalStdlibApi::class)
fun main() {

    // 协程就是代码块,由一个线程去调度任务去分别执行协程。
    runBlocking {
        launch {
            val test4 = test4()
            println(test4)
        }

        println("aaa")

    }

    println("hello")
}
//suspend就是一个标识符,用于协程代码块
suspend fun test4():Int{
    delay(10000)
    return 1
}

inline

package com.tiger.mykotlinapp.scope

fun main() {
    val test = test10(3){
        println(it)
    }
}
//inline使用场景是以函数作为参数来使用的时候 做的一个修饰符  就是可以把方法体的内容直接复制到调用方法里,不用堆栈,减少时间,以空间换时间
inline fun test10(i: Int, finish: (Int) -> Unit) {
    println("之前的内容 $i")
    finish(i.inc())
}

在这段代码中,inline 关键字用于修饰 test10 函数,这意味着编译器会将函数体内的代码直接复制到调用 test10 函数的地方,而不会创建一个函数调用的堆栈。这样的优化可以减少函数调用的时间开销,以提高程序的性能。inline 关键字通常用于当函数作为参数传递时,以避免函数调用带来的性能损失。文章来源地址https://www.toymoban.com/news/detail-799354.html

到了这里,关于Kotlin withContext详解与suspend和inline的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kotlin - data class使用详解

    该文章同步更新到稀土掘金链接 我们经常创建一些只保存数据的类。 在这些类中,一些标准函数往往是从数据机械推导而来的。在 Kotlin 中,这叫做数据类,并标记为data。定义这些类时,编译器为我们做了什么?自动生成了什么内容?我们可以通过使用,并反编译成java代码

    2023年04月11日
    浏览(39)
  • kotlin中,::双冒号的使用详解

    在 Kotlin 中 , :: 双冒号操作符 的作用是 获取 类 , 对象 , 函数 , 属性 的 类型对象 引用 ; 获取的这些引用 , 并不常用 , 都是在 Kotlin 反射操作时才会用到 ; 相当于 Java 中的 反射 类的 字节码类型 Class 类型 , 对象的类型 Class 类型 , 对象的函数 Method 类型 , 对象的属性字段 Field 类

    2024年02月09日
    浏览(36)
  • 【Kotlin】从Java转向Kotlin,耐心看完这篇博客就够了。Kotlin快速入门教程分享

    适合群体:Java已经入门的人,如果是零基础,不要勉强!虽然没有深奥的术语,即使有也尽可能通俗易懂 。 Kotlin和Java都是Jvm语言,相同的部分能省则省(篇幅有限),重点是Kotlin。 示例代码的注释很重要。最好可以使用IDEA等开发工具运行一下。 最后创作不易,全部都是自

    2023年04月08日
    浏览(54)
  • From Java To Kotlin 2:Kotlin 类型系统与泛型

    上期主要分享了 From Java To Kotlin 1 :空安全、扩展、函数、Lambda。 这是 From Java  to Kotlin   第二期。 From Java  to Kotlin  关键在于 思维的转变 。 Kotlin 中大部分语句是 表达式 。 表达式思维是一种编程思维。 编程思维是一种非常抽象的概念,很多时候是只可意会不可言传的。

    2024年02月08日
    浏览(54)
  • kotlin协程详解,不可能学不懂

    首先还是先抛出一系列的问题,大家搞清楚这些问题后学习 Kotlin 协程可能会轻松一点: 1、什么是并发?什么是并行? 2、什么是多任务?什么是协作式多任务?什么是抢占式多任务? 3、什么是同步?什么是异步? 4、什么是非阻塞式?什么是阻塞式? 5、什么是挂起? 6、

    2024年02月05日
    浏览(38)
  • kotlin 转 Java

    今天突然想研究下有些kotlin文件转为Java到底长什么样,好方便优化kotlin代码,搞了半天发现一个非常简单的Android Studio或者Intellij idea官方插件Kotlin,Kotlin是插件的名字,真是醉了; 这里以AS为例,使用很简单: 1.左边目录栏找到想要的转化的kotlin文件,选中,然后顶部Tools

    2024年02月10日
    浏览(35)
  • 使用Kotlin优化Java开发

    Kotlin是一种静态类型的编程语言,运行于Java虚拟机(JVM)、Android和WebAssembly。由JetBrains开发,其设计的主要目的是支持函数式编程和面向对象编程特性。Kotlin可以与Java互相调用,使得它对于现有Java生态系统中的开发人员来说非常有吸引力。与Java相比,它提供了更多的功能和语

    2024年02月09日
    浏览(42)
  • kotlin 和 java 的区别

    Kotlin(科特林)是一个用于现代多平台应用的静态编程语言,由 JetBrains 开发。Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。除此之外Kotlin还可以编译成二进制代码直接运行在机器上(例如嵌入式设备或 iOS)。 其基础编译器(他们将其改为

    2024年01月22日
    浏览(35)
  • 【Kotlin】Kotlin 与 Java 互操作 ② ( @JvmField 注解字段给 Java | @JvmOverloads 注解修饰函数 | @JvmStatic 注解声明静态成员 )

    在 Java 中是 不能直接访问 Kotlin 中的字段 的 , 必须 调用相应的 Getter 和 Setter 方法 , 才能进行访问 ; 代码示例 : Kotlin 类 : 在 Kotlin 中声明的成员属性 , 默认就是 private 私有属性 , 默认为其生成了 Getter 和 Setter 方法 ; Java 类直接调用 : 在 Java 类中 , 不能直接调用 Kotlin 字段 ; 在

    2024年02月02日
    浏览(35)
  • 【送书第三期】强势挑战Java,Kotlin杀回TIOBE榜单Top 20!学Kotlin看哪些书?

    与Java一样,Kotlin也是用于Android应用程序开发的编程语言,是Android官方支持的第二种编程语言。 2016年Kotlin正式发布,在Android“官宣”后曾在2017年进入TIOBE编程语言排行榜前20,这次回归用了5年多时间。如果说第一次上榜是靠“蹭热点”,那么这次上榜完全是“凭实力”。

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包