Kotlin 协程学习笔记(一):Kotlin 协程的概念
学习资料:
B站:动脑学院协程课程
一、Kotlin 线程实现异步与协程实现异步
//************ 使用协程处理异步调用(伪代码) *****************/ /** * 被suspend修饰的函数叫做“挂起函数”,表示该函数支持同步化的异步调用。 * * 使用suspendCoroutine<T>函数的返回值类型作为挂起函数bitmap-Suspendable的返回值类型。这个函数 * 除了确定返回值的类型外,还能帮我们拿到一个Continuation的实例,负责保存和恢复挂起状态。这里说明一下 * 使用到的几个函数: * resume:将正常的结果返回,它的参数实际上就是bitmapSuspendable的返回值Bitmap. * resumeWithException:将异常返回,它的参数就是bitmapSuspendable调用时会抛出的异常. */ @RequiresApi(Build.VERSION_CODES.P) suspend fun main() { try { val bitmap = bitmapSuspendable("...") } catch (e: Exception) { // 异常处理 } } @RequiresApi(Build.VERSION_CODES.P) suspend fun bitmapSuspendable(url: String): Bitmap = suspendCoroutine { thread { try { it.resume(download(url)) } catch (e: Exception) { it.resumeWithException(e) } } } @RequiresApi(Build.VERSION_CODES.P) fun download(url: String): Bitmap { return Bitmap.createBitmap(Picture()) } //********************* 异步回调 ********************* fun main() { val callback = { println("D") } val task = { println("C") callback() } println("A") thread(block = task) // 执行一个线程 println("B") } //******************** 异步代码 ********************* fun main() { val task = { println("C") } println("A") thread(block = task) // 执行一个线程 println("B") }
二、协程的概念讲解
协程的核心点就是函数或者一端程序能被挂起,稍后再在挂起的为止上恢复。挂起和恢复是开发者的程序逻辑自己控制的,协程是通过主动挂起出让运行权来实现协作的。因此,它的本质就是在讨论程序控制流程的机制,这是最核心的点,任何场景下探讨协程都能落到挂起和恢复。

浙公网安备 33010602011771号