作用域(CoroutineScope)是用于管理协程的,所有的协程必须运行在某个作用域内,这样通过作用域就可以更好的管理协程,比如控制它们的生命周期。这里面的概念就是结构化并发(structured concurrency),也就是让所有的协程以一种结构化的方式来组织和管理,以让整体的并发更为有秩序和可控。 这与人类社会是类似的,比如军队,...
作用域(CoroutineScope)是用于管理协程的,所有的协程必须运行在某个作用域内,这样通过作用域就可以更好的管理协程,比如控制它们的生命周期。这里面的概念就是结构化并发(structured concurrency),也就是让所有的协程以一种结构化的方式来组织和管理,以让整体的并发更为有秩序和可控。 这与人类社会是类似的,比如军队,...
作用域(CoroutineScope)是用于管理协程的,所有的协程必须运行在某个作用域内,这样通过作用域就可以更好的管理协程,比如控制它们的生命周期。这里面的概念就是结构化并发(structured concurrency),也就是让所有的协程以一种结构化的方式来组织和管理,以让整体的并发更为有秩序和可控。 这与人类社会是类似的,比如军队,...
Kotlin的Project Lead,Roman Elizarov的一片文章https://elizarov.medium.com/structured-concurrency-722d765aa952介绍了StructuredConcurrency发展的背景。相对Kotlin1.1时代,后来新增的StructuredConcurrency理念,也就是我们现在所熟悉的协程版本所具备的特性,解决了各种复杂业务场景下,例如协程嵌套、异步等等使用方式时所面临的...
如果我们catch了CancellationException, 会破坏Structured Concurrency. 看这个例子: funmain()= runBlocking { valjob = launch(Dispatchers.Default) { println("my long time function start") myLongTimeFunction() println("my other operations === ")// this line should not be printed when cancelled }...
参考维基百科Structured concurrency: Structured concurrency is a programming paradigm aimed at improving the clarity, quality, and development time of a computer program by using a structured approach to concurrent programming. 它是一种编程范式,旨在通过结构化的方式使并发编程更清晰明确、更高质量、更易维护...
协程通过结构化的并发(Structured Concurrency)机制,将协程的生命周期与作用域绑定,异常处理更加直观和集中。 使用try-catch块捕获协程中的异常,使用CoroutineExceptionHandler进行统一的异常处理。 示例: funmain()= runBlocking {valhandler = CoroutineExceptionHandler { _, exception -> ...
Structured concurrency(结构化并发) Channels(信道) Flow(异步流) Coroutine(协程) 为了避免在主线程中执行过多任务导致 UI 反应迟钝,不可避免的必须使用多线程。 但由于多线程耗费太多资源,Kotlin 语言引入了协程以替代线程。 Kotlin 语言中的协程可以被想象成一种轻量级的线程。可以轻易开启百万级别的协程而不必担心...
2.4 结构化并发(Structured concurrency) 2.5 范围构建器(Scope builder) 2.6 重构和提取方法(Extract function refactoring) 2.7 协程是轻量级的(Coroutines ARE light-weight) 2.8 全局协程就像是守护线程一样(Global coroutines are like daemon threads)
结构化并发(Structured Concurrency) : 结构化并发提供了一种管理协程生命周期的模型,保证子协程完成前父协程不会结束。 通过在作用域内启动协程,确保它们的生命周期和错误处理都能被集中管理。 异常处理(Exception Handling) : 协程中的异常处理支持结构化的捕获和传播机制。