Kotlin源码系列-launch源码笔记

前言

  • 从如何使用kotlin协程向研究协程内部运行机制看齐

  • 启动协程:launch,async,runBlocking等,但只能通过调试参数,log日志看到协程

  • 提出疑问:1.协程到底是如何创建的 2.对应的源码是哪些?哪些类和方法

  • 类比java当中的线程类:Thread.java,寻找协程类,开始阅读源码

  • 基础层(Kotlin库中定义的协程基础元素)

  • 中间层(协程框架通用逻辑 kotlin.coroutines-common,包括:async,launch,Job,Deferred,Flow)

  • 平台层(协程在特定平台的实现,JVM,JS,Native),JVM是线程池和Future,JS是JS线程和Promise

协程启动基础API

基础层-Continuation中两个扩展函数

  • createCoroutine,创建协程
  • startCoroutine,启动协程

中间层调用上面的两个方法

  • async

  • rubBlocking

  • launch,CoroutineScope.launch->CoroutineStart.invoke->block.startCoroutineCancellable->createCoroutineUnintercepted


公众号如何对标?

公众号对标

如何去找对标账号?

看一看

  • 订阅号消息列表-看一看
  • 发现-看一看-在看
  • 文章页底部推荐

搜一搜

  • 发现-看一看-热点

核心玩法

  • 关注+星标
  • 不要找自己排斥的领域,除非你做了一段时间后有感觉
  • 专注才是最简单的方法

Mac中使用VsCode快捷键

Mac中使用VsCode快捷键记录。

Read more
Mac安装使用scrcpy-投屏控制神器

Mac中如何安装scrcpy和常用命令使用介绍。

Read more
Android使用WebView使用摄像头后处理默认播放按钮

前端页面使用本地摄像头拍照,在Android的Webview发现,默认展示播放按钮图标,另外点击没有反应,摄像头权限都是赋予了。

Read more
Android自定义相机开发(一)

主要概述相机基本知识,Android中相机基本知识点,自定义相机开发过程,相机开发总结内容。

Read more
Mac中安装使用nginx

简单安装使用nginx的教程。

Read more
Android系统在开机时主屏幕应用Activity启动两次定位处理

记录定制的Android13系统中设置主屏幕应用后开机启动崩溃导致需要重新设置主屏幕应用,本文主要从问题产生,问题定位,问题解决如何思路展开描述。

Read more
adb使用指南

介绍adb,常用命令等

Read more
2023年终总结

记录第四年写总结,好记性不如烂笔头,有时候想的太多了,不如把它写下来,何况回顾过去一年事情,有助于帮助我们去学习提升自我能力,看去年的目标有没有完成,明年的目标是啥。

Read more