Kotlin协程

2023-03-25  本文已影响0人  独自闯天涯的码农

一、协程简介

Kotlin 中的协程提供了一种全新处理并发的方式,您可以在 Android 平台上使用它来简化异步执行的代码。协程是从 Kotlin 1.3 版本开始引入。

协程作用:

处理耗时任务 (Long running tasks),这种任务常常会阻塞住主线程;
保证主线程安全 (Main-safety) ,即确保安全地从主线程调用任何 suspend 函数。

协程的特点

协程的四个基础概念

二、协程的使用

1、添加依赖

在应用build.gradle中添加

dependencies {
    // Kotlin
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.4.32"

    // 协程核心库
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3"
    // 协程Android支持库
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3"
    // 协程Java8支持库
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.4.3"

    // lifecycle对于协程的扩展封装
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
    implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"
}

2、suspend

挂起函数不会阻塞其所在线程,而是会将协程挂起,在特定的时候才再恢复执行

kotlin中的delay() 函数
挂起函数是非阻塞的,是因为它和单纯的线程休眠有着本质的区别。
挂起函数并不会阻塞其所在线程,这样就极大地提高了线程的并发灵活度,最大化了线程的利用效率。
Java 中的 Thread.sleep()
而如果是使用Thread.sleep()的话,线程就只能干等着而不能去执行其它任务,降低了线程的利用效率。

协程是运行于线程上的,一个线程可以运行多个(几千上万个)协程。线程的调度行为是由操作系统来管理的,而协程的调度行为是可以由开发者来指定并由编译器来实现的,协程能够细粒度地控制多个任务的执行时机和执行线程,当线程所执行的当前协程被 suspend 后,该线程也可以腾出资源去处理其他任务。

//挂起函数定义
public suspend fun delay(timeMillis: Long)
上一篇 下一篇

猜你喜欢

热点阅读