首页
学习
活动
专区
工具
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 是 普通函数 , 可以在 普通代码位置使用

46230

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

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

1K10

【Kotlin 异常处理 ② ( SupervisorJob | supervisorScope 作用构建器函数 )

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

62410

【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

74820

【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 字符串类型返回值 , 则调用

43210

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

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

89620

【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.2K10

Kotlin 程之Practice

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

1.1K20

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

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

29610

kotlin--启动和取消

作用内就是main函数主线程,会等到所有子运行完毕后才结束 2.join Jobjoin函数,会让后面的等待当前执行完毕后再执行 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 来处理取消操作

92530

【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){

70420

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叫做构建器,里面自带继承父上下文作用,而大写作用是自定义设置上下文作用

15410

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 这回我们没有构建新作用

91010

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.2K20

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

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

1.4K30

Android7个必要知识点

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

41540

【Kotlin 】Channel 通道 ③ ( CoroutineScope#produce 构造生产者 | CoroutineScope#actor 构造消费者 )

函数 , 可以快速构造一个 生产者 , 其返回值是 ReceiveChannel 实例对象 , 这样就可以在消费者中通过该 ReceiveChannel 实例获取并消费数据 ; 1、CoroutineScope...* * 作用包含[ProducerScope]接口,该接口实现 * [CoroutineScope]和[SendChannel],这样就可以调用 * [将][SendChannel。...coroutineContext]上下文。 * @param capacity 通道缓冲区容量(默认情况下没有缓冲区)。 * @param block 代码。...* * 作用包含[ActorScope]接口,该接口实现 * [CoroutineScope]和[receichannnel],这样就可以调用 * [接受][ReceiveChannel...newCoroutineContext]用于描述可用于新创建调试工具。

43210

Kotlin | 使用手册(不间断更新)

,它并不会造成函数阻塞,但是会挂起 作用构建器 runBlocking 会阻塞当前线程,直到结束。...所以在实际应用中,我们更推荐 : 在执行操作所在指定作用内启动,而非随意使用 取消与超时 cancelAndJoin 取消一个并等待结束 runBlocking {...它启动了一个单独,这是一个轻量级线程并与其它所有的一起并发工作。...当一个父被取消时,同时意味着所有的子也会取消。 然而,如果此时用 GlobalScope.launch启动子,则它与父作用将无关并且独立运行。...().name) }.join() 这里使用了 jvm参数 -Dkotlinx.coroutines.debug 如何配置jvm参数:Android Studio,Intellij同理 作用

2.2K20
领券