Kotlin 协程学习笔记

Kotlin 协程笔记

简介

协程是一种类似轻量级线程的东西。在官方示例中,甚至可以同时开启十万个协程进行工作,其轻量性可见一斑。

kotlinx.coroutines是由 Jetbrains 开发的携程库,本身还改了很多协程的高级语言。也是本文的主角

Android 中使用

app.build.gradle中添加依赖

implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.0'

即可在项目中使用该库

基本用法

直接上代码,通过代码和注释能更直观的感受它的用法。(并不是我懒得组织文字)

通过GlobalScope.launch开启协程。

    /**
     * 协程的基本用法
     * @author binze 2020/6/12 14:41
     */
    private fun coroutineTest0() {
        GlobalScope.launch {
            //后台耗时操作
            while (true) {
                Log.d(TAG, "onCreate: " + System.currentTimeMillis())
                delay(1000)
            }
        }

        GlobalScope.launch(Dispatchers.Default) {
            //默认协程
        }

        GlobalScope.launch(Dispatchers.IO) {
            //IO携程
        }

        GlobalScope.launch(Dispatchers.Main) {
            //主协程
        }

//        GlobalScope.launch(newSingleThreadContext("MyThread")) {
//            //新建线程协程
//            //协程上下文包含一个协程调度器。可以将协程的执行局限在指定线程重。
//            //尽量不要轻易使用 newSingleThreadContext("MyThread")
//        }
    }

GlobalScope.launch会返回一个 Job。通过它可以随时取消协程

    /**
     * 取消协程
     * @author binze 2020/6/12 14:41
     */
    private fun coroutineTest1() {
        val job = GlobalScope.launch {
            // some work
        }
        job.cancel()
    }

利用协程和 async{}await()处理异步操作(如数据库读取、网络请求等)更为方便。

    /**
     * 异步请求
     * @author binze 2020/6/12 14:44
     */
    private fun coroutineTest2() {
        GlobalScope.launch {
            withTimeout(5000){  //5s超时
                val data = async {
                    //模拟异步请求
                    delay(3000)
                    "return value"  //将结果返回出去
                }
                Log.d(TAG, "coroutineTest2: " + data.await() /* 通过await()处理结果 */ )
            }
        }
    }

未完

以上是协程的及其基本的用法。更多内容请参照 官方文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值