首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

不带runBlocking的协程作用域返回值

是指在使用协程作用域创建协程时,不使用runBlocking函数来阻塞当前线程并等待协程执行完成,而是直接返回一个协程的引用或句柄。

协程作用域是一种用于管理协程的上下文环境,它可以控制协程的生命周期,并提供一些额外的功能,如异常处理、作用域限定等。

不带runBlocking的协程作用域返回值的优势在于可以将协程的执行与当前线程的执行分离开来,使得代码更加简洁和可读性更高。同时,它也可以更好地利用多核处理器的性能,提高程序的并发性能。

不带runBlocking的协程作用域适用于需要在协程中执行一些耗时的操作,但又不希望阻塞当前线程的场景。例如,在前端开发中,可以使用不带runBlocking的协程作用域来执行一些网络请求或异步操作,以避免阻塞UI线程,提升用户体验。

腾讯云提供了一系列与协程相关的产品和服务,如云函数(Serverless)、容器服务(TKE)、弹性伸缩(Auto Scaling)等,这些产品可以帮助开发者更好地利用协程来构建高性能、可扩展的应用程序。

更多关于腾讯云相关产品和服务的介绍,可以访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Kotlin 协程】协程启动 ⑤ ( 协程作用域构建器 | runBlocking 函数 | coroutineScope 函数 | supervisorScope 函数 )

文章目录 一、结构化并发 二、协程作用域构建器 ( runBlocking 函数 | coroutineScope 函数 ) 二、协程作用域构建器 ( coroutineScope 函数 | supervisorScope...实现 CoroutineScope 协程作用域接口 ) 【Kotlin 协程】协程底层实现 ④ ( 结构化并发 | viewModelScope 作用域示例 ) 博客中介绍了 结构化并发 ; 结构化并发的作用...: 协程任务 运行时 , 必须指定其 CoroutineScope 协程作用域 , 其会 追踪所有的 协程任务 , CoroutineScope 协程作用域 可以 取消 所有由其启动的协程任务 ; 结构化并发...; 二、协程作用域构建器 ( runBlocking 函数 | coroutineScope 函数 ) ---- 结构化并发 通过 协程作用域 CoroutineScope 管理协程任务 ; 协程作用域...构建器 是 结构化并发 的重要组成部分 ; 常用的 协程作用域构建器 有 coroutineScope 和 runBlocking ; runBlocking 是 普通函数 , 可以在 普通的代码位置使用

53930

【Kotlin 协程】协程底层实现 ③ ( 结构化并发 | MainScope 作用域 | 取消协程作用域 | Activity 实现 CoroutineScope 协程作用域接口 )

文章目录 一、MainScope 协程作用域 二、取消 MainScope 协程作用域 三、Activity 实现 CoroutineScope 协程作用域接口 常见的 CoroutineScope...是一个 函数 , 其返回值类型为 CoroutineScope 协程作用域 ; 这是使用了设计模式中的 工厂模式 , 生产一个 协程作用域 实例对象 ; 之后的 协程操作都要定义在该协程作用域中 ;...是 协程作用域的扩展函数 , 其后的代码块参数就是 协程作用域 , 在其中执行协程任务 ; public fun CoroutineScope.launch( context: CoroutineContext...消该 协程作用域 , 同时 该协程作用域内的协程任务不管是否执行完毕 都一并取消 , 该函数是 CoroutineScope 的扩展函数 ; /** * 取消这个范围,包括它的作业和它的所有子任务...启动的协程任务 , 如果取消 mainScope 协程作用域 , 则在该 协程作用域 中执行的 协程任务 , 都会被取消 ; 挂起函数中途被取消 会抛出 JobCancellationException

1.3K11
  • 【Kotlin 协程】协程异常处理 ② ( SupervisorJob 协程 | supervisorScope 协程作用域构建器函数 )

    文章目录 一、SupervisorJob 协程 二、supervisorScope 协程作用域构建器函数 在上一篇博客介绍了 协程异常处理 【Kotlin 协程】协程异常处理 ① ( 根协程异常处理...() 作为参数 ; // 在该作用域下创建的协程都是 SupervisorJob 协程 val supervisorScope = CoroutineScope(SupervisorJob()) 使用该...作用域 // 在该作用域下创建的协程都是 SupervisorJob 协程 val supervisorScope = CoroutineScope(SupervisorJob()) // 通过 Supervisor...协程作用域构建器函数 ---- 使用 supervisorScope 作用域构建器函数 , 可以直接创建一个 SupervisorScope 协程作用域 , 在该作用域中定义的 协程 , 都是 SupervisorJob...协程 ; 如果 SupervisorScope 作用域自身出现异常 , 则所有子协程都会取消 ; 代码示例 : // 将主线程包装成协程 runBlocking{ supervisorScope

    77210

    【Kotlin 协程】协程取消 ① ( 协程作用域取消 | 协程作用域子协程取消 | 通过抛出异常取消协程 | Job#cancel 函数 | 自定义异常取消协程 )

    文章目录 一、协程取消 二、协程作用域取消 三、协程作用域子协程取消 四、通过抛出异常取消协程 1、Job#cancel 函数 2、默认异常取消协程 3、自定义异常取消协程 一、协程取消 ----...协程取消 : 取消协程作用域 : 取消 协程作用域 会将该作用域中的 所有 子协程 一同取消 ; 取消子协程 : 子协程 的取消 不会影响 同一层级的 兄弟协程的执行 ; 通过抛出异常取消协程 : 协程取消通常会通过...函数 ; 二、协程作用域取消 ---- 创建 协程作用域 CoroutineScope 实例对象 , 传入 调度器 : // 创建协程作用域 val coroutineScope = CoroutineScope...; 然后 , 在协程作用域中 创建两个子协程 ; 最后 , 取消协程作用域 , 同时该作用域内的两个子协程也一并被取消了 ; package kim.hsl.coroutine import android.os.Bundle...10:31:51.938 I job0 子协程执行完毕 三、协程作用域子协程取消 ---- 单独取消 协程作用域 中的 子协程 , 协程作用域 中的其它 兄弟协程不受影响 ; package kim.hsl.coroutine

    1.1K20

    【Kotlin 协程】协程启动 ① ( 协程构建器 | launch 构建器 | async 构建器 | runBlocking 函数 | Deferred 类 )

    ---- 1、协程构建器概念 协程 需要 协程构建器 来启动 , 协程构建器 就是 CoroutineScope 协程作用域的两个扩展函数 ; 协程构建器 : 协程有两种构建器 , 调用 CoroutineScope...协程作用域 的如下两个构建起可启动协程 ; launch 构建器 : 返回 Job 实例对象 , 该协程任务没有返回值 ; launch 函数是 CoroutineScope 协程作用域 类的扩展函数..., 可以使用 .await() 函数可以获取协程的返回值 , async 函数是 CoroutineScope 协程作用域 类的扩展函数 ; public fun CoroutineScope.async...函数 调用 GlobalScope#launch 方法 , 可以启动一个协程 , 这是顶级的协程 , 其 协程作用域是进程级别的 , 生命周期与应用进程同级 , 即使启动协程的对象被销毁 , 协程任务也可以继续执行...Int 值 ; 返回值直接写在 async 代码块的最后一行 , 然后调用 Deferred#await() 函数获取该返回值 ; 协程作用域 中返回了 String 字符串类型的返回值 , 则调用

    48910

    【Kotlin 协程】协程底层实现 ④ ( 结构化并发 | viewModelScope 作用域示例 )

    文章目录 一、viewModelScope 作用域作用 二、viewModelScope 作用域示例 常见的 CoroutineScope 协程作用域 : GlobalScope : 该作用域是 进程级别的..., 与应用进程同级 , 即使 Activity 被销毁 , 协程任务也可以继续执行 ; MainScope : 该 作用域仅在 Activty 中 , 如果 Activity 被销毁 , 则 在 onDestory...Activity 中使用 , 与 Activity 生命周期绑定 ; 一、viewModelScope 作用域作用 ---- viewModelScope 协程作用域 需要绑定 ViewModel 生命周期..., 在特定界面中 , 如可旋转屏幕的 Activity 界面中 , 如果使用 MainScope 协程作用域 , 当屏幕旋转时 , 就会在 onDestory 生命周期函数中 取消协程作用域 , 此时协程相关的临时数据都被取消了...; 当旋转 Activity 界面时 , 会调用当前 Activity 的 onDestory 生命周期函数 , 自然对应的协程作用域也会被取消 , 因此引入 viewModelScope 作用域 ,

    99820

    【Kotlin 协程】协程取消 ③ ( finally 释放协程资源 | 使用 use 函数执行 Closeable 对象释放资源操作 | 构造无法取消的协程任务 | 构造超时取消的协程任务 )

    Log.i(TAG, "取消协程任务") // 取消协程任务 job1.cancelAndJoin() Log.i(TAG, "退出协程作用域...(TAG, "取消协程任务") // 取消协程任务 job1.cancelAndJoin() Log.i(TAG, "退出协程作用域...23:12:32.093 I 退出协程作用域 四、使用 withTimeoutOrNull 函数构造超时取消的协程任务 ---- 使用 withTimeout 函数 , 可以构造超时取消的协程任务..."(withTimeoutOrNull 返回值)" } Log.i(TAG, "上述协程任务的返回值为 ${result}") }...} } 执行结果 : 23:34:35.778 I 协程任务执行开始 23:34:36.794 I 上述协程任务的返回值为 null

    1.4K10

    Kotlin 协程之Practice

    Kotlin 协程作用 让线程主动释放CPU是协程一个作用,一个协程执行后挂起,然后让另一个协程执行, 等到这个协程执行完毕再让前一个协程继续执行。...    }       //作用域构建器     //可以使用 coroutineScope 构建器来声明你自己的作用域的。...它启动了一个新的协程作用域并且在所有子协程执行结束后并没有执行完毕。     ...,这个协程是轻量级的,与其他协程一起并发工作,与launch启动协程不同,launch启动返回一个Job对象     // 不带有任何返回值,而async返回一个Defrred对象一个轻量级非阻塞future...,该方法中都是通过GlobalScope.launch创建协程,将异常处理     //设置在runBlocking作用域是无效的,尽管子协程设置了异常处理,但主协程还是会取消     //输出 Caught

    1.2K20

    Kotlin 协程的上下文和调度器介绍-Dispatchers

    因此它与这个启动的作用域无关且独立运作。...} println("返回值:父协程本身已经执行完毕了,但我并没有调用方法明确的关闭所有子协程, 子协程的事务还没有结束") } request.join...() // 等待请求的完成,包括其所有子协程 println("所有的协程结束") } //输出 返回值:父协程本身已经执行完毕了,但我并没有调用方法明确的关闭所有子协程, 子协程的事务还没有结束...作用域我们都理解,就是在指定空间和区域内生效而已。...Android 现在在所有具有生命周期的实体中(activity,Fragment等),都对协程作用域提供了一级支持。 局部数据传递 我们如果使用协程,特别是子协程,父协程混杂等等情况。

    45810

    Kotlin协程与并发编程

    它比传统的线程池、回调或者Future对象更加轻量和易用。 1.什么是协程? 协程是Kotlin提供的一个轻量级线程概念,它允许你暂停和恢复执行,帮助你以非阻塞的方式处理异步任务。...协程本质上是轻量级的线程,它们与传统的线程相比,不需要大量的内存和系统资源。 2.基本的协程使用 要使用协程,首先需要添加Kotlin协程库依赖。 2.1....启动协程 协程通过launch或async来启动,launch适用于没有返回值的情况,而async用于有返回值的情况。...} 在上面的代码中,runBlocking是一个阻塞函数,它用于启动一个顶级协程,等待其完成。launch启动一个新的协程,并且主线程继续执行。...} 上面的doSomething函数是一个挂起函数,它会暂停协程1秒钟,然后返回一个结果。 3.2. 调用挂起函数 你只能在协程作用域内调用挂起函数。

    14020

    Android面试题之Kotlin协程一文搞定

    ,而runBlocking是在主线程中 协程作用域构建器 coroutineScope、runBlocking、supervisorScope runBlocking是常规函数,会阻塞当前线程;coroutineScope...,一个协程失败了,所有其他兄弟协程也会被取消 supervisorScope,一个子协程失败了,不会影响其他兄弟协程,但如果是作用域有异常失败了,则所有的子协程都会失败退出 coroutineScope...和CoroutineScope coroutineScope是一个挂起函数,是协程作用域构建器,CoroutineScope()是一个普通函数 coroutineScope后面的协程作用域的协程上下文是继承父协程作用域的上下文...CoroutineScope()有自己的作用域上下文 都能够进行解构化并发,可以很好的管理多个子协程 协程的取消 取消作用域会取消它的子协程 被取消的子协程不会影响其余兄弟协程 协程通过抛出一个特殊的异常...此外,它还会尝试出让线程的执行权,给其他协程提供执行的机会 协程取消的副作用 在finally中释放资源 @Test fun `test release resources`() = runBlocking

    19610

    【Kotlin 协程】Flow 异步流 ⑥ ( 调用 Flow#launchIn 函数指定流收集协程 | 通过取消流收集所在的协程取消流 )

    , 开始 收集元素 , 按照顺序逐个处理产生的事件 ( 元素 ) ; 调用 Flow#launchIn 函数 , 传入 协程作用域 作为参数 , 可以 指定 收集 Flow 流元素 的 协程 ; 在上一篇博客...【Kotlin 协程】Flow 异步流 ⑤ 中 , 调用 Flow#flowOn 函数 , 可以 指定 Flow 流发射元素 的 协程 ; Flow#launchIn 函数返回值是 Job 对象 ,...是 协程任务对象 , 可调用 Job#cancel 函数取消该协程任务 ; 2、Flow#launchIn 函数原型 Flow#launchIn 函数原型 : /** * 终端流操作符,在[作用域]中...,提供的作用域负责取消。...Flow 异步流 runBlocking { // 该协程作用域 2 秒后超时取消 withTimeoutOrNull(2000){

    86020

    Kotlin协程知识累计

    =" + System.currentTimeMillis()) val job2 = GlobalScope.launch(Dispatchers.IO) { // 创建一个协程作用域...=" + System.currentTimeMillis()) val job3 = GlobalScope.launch(Dispatchers.IO) { // 创建一个协程作用域...4.runBlocking {}会等待所有子协程执行完毕 2、非阻塞式挂起:就是用阻塞式的代码写法,实现了非阻塞式的功能(同步代码写法实现异步任务) runBlocking本身会阻塞当前线程去等待...5、大写的CoroutineScope没有继承runBlocking协程的上下文,所以这种情况的runBlocking不会等待子协程CoroutineScope执行完毕。...大写的CoroutineScope与小写的coroutineScope的区别:小写的coroutineScope叫做协程构建器,里面自带继承父协程的上下文作用域,而大写的作用域是自定义设置的协程上下文作用域

    23410

    kotlin--协程的启动和取消

    作用域内就是main函数的主线程,会等到所有子协程运行完毕后才结束 2.join Job的join函数,会让后面的协程等待当前的协程执行完毕后再执行 fun `test join build`() =...1.runBlocking与coroutineScope runBlocking是常规函数,它会阻塞主线程,而coroutineScope是挂起函数,它们都会等待其协程体和子协助执行结束,作用域构建器使用的是父协程的上下文...二、协程取消 1.协程的取消 1.取消作用域会取消它的子协程,CoroutineScope是创建一个全新的协程上下文,和coroutineScope作用域是不同的,作用域构建器使用的是父协程的上下文 fun...不会等自定义作用域执行完毕 delay(1200) scope } 2.被取消的子协程,不影响其他兄弟协程 fun `test cancel`() = runBlocking {...不会等自定义作用域执行完毕 delay(1200) scope } 结果: job2 finished 3.协程是通过抛出一个特殊的异常:CancellationException 来处理取消操作

    1K30

    kotlin--协程上下文、异常处理

    的事情,如果不考虑调度消耗的时间,那么a协程的生命也会延长成200ms 代码验证下: fun `test context life`() = runBlocking { //定义一个作用域...的元素 2.一般情况下,协程体内所有的子协程,都继承至根协程,协程的继承的关系不是我们所了解的类的继承关系,而是父协程和子协程的生命周期关系,还记得我们上面举得例子么,除非在协程体内自己手动创建协程作用域...,即:创建一个全新的协程上下文,我们之前已经介绍过了: CorountineScope:创建协程作用域,新起线程,观察源码,内部实际实例化的是ContextScope,ContextScope被internal...life2`() = runBlocking { //定义一个作用域 val a = CoroutineScope(Dispatchers.Default) //协程a开启...("jobA finished") } println("main finished") } 结果: main finished jobA finished 这回我们没有构建新的协程作用域

    95510

    Kotlin---协程的使用

    第一个协程 在使用协程之前,需要保证Kotlin-Gradle-Plugin的版本高于1.3。目前最高的版本为1.3.11。...如果我们忘记保持对新启动的协程的引用,它还会继续运行。 阻塞的协程runBlocking GlobalScope.launch启动了一个线程创建新的协程,并没有阻塞当前线程。...中调用delay()会阻塞当前线程 在runBlocking中调用launch()会开启新的协程,并且不会阻塞当前线程 在runBlocking中调用launch()会在当前线程中执行协程 main @...main @coroutine#1 CoroutineScope作用域 在runBlocking中可以定义一个coroutineScope,而该函数的作用是为在这个函数中启动的协程添加作用域,只有当作用域内的协程都执行完毕后...,会等待coroutineScope中的协程都执行完毕后,才会继续执行 挂起函数 当协程中的代码超级多的时候,通常都会把这些代码提取到一个函数中。

    1.3K20

    Kotlin 学习笔记(四)—— 协程的基础知识,面试官的最爱了~

    GlobalScope.launch (Dispatchers.Main + coroutineExceptionHandler) { // 执行操作 } 这段代码用到了 GlobalScope.launch,代表是个顶级作用域的协程...3.4 协程作用域 launch 函数的第三个参数是一个由外层 CoroutineScope 调用的 lambda 闭包,我们需要在协程中处理的逻辑都在这个闭包中实现。...code 2 中的GlobalScope就是一个 CoroutineScope 对象,这个对象代表将要启动的协程的作用域范围,或者说 CoroutineScope 是协程用于管理自身生命周期的对象。...GlobalScope:通常被用于启动一个顶级协程(顶级协程是顶级作用域,即没有父协程的作用域),这种协程的生命周期是会伴随应用的整个生命周期,不会被取消掉,所以要非常谨慎的使用,容易造成内存泄漏。...协程启动常见的几种方法 启动协程主要的三种方法:runBlocking: T:用于执行协程任务,通常只用于启动最外层的协程。

    1.6K30

    Android协程的7个必要知识点

    挂起函数: 掌握挂起函数的概念,以及如何在协程中调用和编写挂起函数。学会处理异常和错误。 协程作用域: 理解协程作用域的概念,如何管理多个协程的生命周期和范围。...Kotlin Coroutine引入了协程作用域的概念,帮助我们更好地管理多个协程的执行以及确保资源的正确释放。 什么是协程作用域?...协程作用域是一个上下文(CoroutineScope)的实例,用于创建和管理相关联的协程。通过将协程限定在特定的作用域内,我们可以更好地控制它们的生命周期。...在协程作用域内启动协程时,它们会继承作用域的上下文和调度器。...launch { // 在协程作用域内启动协程 // 该协程将继承外部作用域的上下文和调度器 } 协程作用域的嵌套 协程作用域可以嵌套,内部作用域的协程会继承外部作用域的上下文。

    75952
    领券