【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

掌握 Kotlin 协程:在 Android 和后端开发中实现轻量级并发 (掌握控制网瘾的新药包括)

用户投稿2024-04-12热门资讯30

Kotlin 协程是一种轻量级的并发机制,可帮助您在 Android 和后端开发中编写可扩展且高效的代码。与传统线程相比,协程可以更轻松地管理并发,并且可以避免许多常见的并发问题。

协程基础

协程本质上是轻量级的线程,但它们比传统线程更轻便且更省内存。协程还支持协作式多任务处理,这意味着它们可以在同一线程上并发执行,而无需显式上下文切换。

创建协程非常简单。您只需使用 suspend 关键字标记一个函数,该函数表示该函数可以被挂起。您可以使用 GlobalScope.launch runBlocking 等函数启动协程。


fun main() = runBlocking {// 创建协程val job = GlobalScope.launch {// 在协程中执行代码}// 等待协程完成job.join()
}

在 Android 开发中使用协程

协程非常适合在 Android 开发中使用,因为它们可以简化异步任务的管理。例如,您可以使用协程执行网络请求、处理文件 I/O 或更新 UI。

为了在 Android 中使用协程,您需要添加以下依赖项到您的 app/build.gradle 文件中:


dependencies {// Kotlinx 协程implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4")
}
您还可以使用 Jetpack 库(如 ViewModelScope LifecycleScope )来进一步简化协程的使用。

在后端开发中使用协程

掌握 Kotlin 协程:在 Android 和后端开发中实现轻量级并发 (掌握控制网瘾的新药包括) 第1张

协程也可以用于后端开发,例如在 Web 应用程序和服务器端应用程序中。协程可以帮助您编写高性能、可扩展的代码,同时避免常见的并发问题,如死锁和竞争条件。

要使用协程进行后端开发,您可以使用 Kotlinx 协程的 kotlinx-coroutines-core 库。该库提供了各种功能,可帮助您管理并发,包括协程启动器、上下文和调度程序。

例如,您可以使用协程执行以下操作:

  • 处理 HTTP 请求
  • 管理数据库连接
  • 并行执行任务

结论

Kotlin 协程是一种强大的工具,可帮助您在 Android 和后端开发中编写可扩展且高效的代码。通过使用协程,您可以避免常见的并发问题,并编写在同一线程上并发执行代码。

如果您正在寻找一种提高应用程序性能和可扩展性的方法,那么 Kotlin 协程是您的理想选择。


聊一聊线程池和Kotlin协程

目前很多开发组都用上协程来处理异步任务了,但是有的地方协程提供的原生API还是不足以应付,比方说一些SDK提供了传入Executor的接口(以便复用调用者的线程池来执行异步任务),这时候可以用这JDK提供的线程池,或者封装一下协程也可以满足需求。

协程提供了 和 分别用于 计算密集型任务和 IO密集型任务,类似于RxJava的 ()和 () 。 但两者有所差异,比如RxJava的 ()不做并发限制,而 ()做了并发限制:

考虑到当前移动设备的CPU核心数都不超过64,所以可以认为协程的 的最大并发为64。 的并发限制为:

考虑到目前Android设备核心数都在2个以上,所以可以认为 的最大并发为 CPU cores。 和 是共享协程自己的线程池的,二者可以复用线程。 不过目前这两个Dispatchers 并未完全满足项目中的需求,有时我们需要一些自定义的并发限制,其中最常见的是串行。

RxJava有 (),但这个 () 和AsyncTask的 SERAIL_EXECOTOR 一样,是全局串行,不同的任务处在同一个串行队列,会相互堵塞,因而可能会引发问题。

或许也是因为这个原因,kotlin协程没有定义“。 对于需要串行的场景,可以这样实现:

这样可以实现局部的串行,但和协程的线程池是相互独立的,不能复用线程。 线程池的好处:

然彼此独立创建线程池的话,会大打折扣。 如何既复用协程的线程池,又自主控制并发呢? 一个办法就是套队列来控制并发,然后还是任务还是执行在线程池之上。 AsyncTask 就是这样实现的:

用SerialExecutor的execute的任务会先进入队列,当mActive为空时从队列获取任务赋值给mActive然后通过线程池 THREAD_POOL_EXECUTOR 执行。 当然AsyncTask 的SerialExecutor是全局唯一的,所以会有上面提到的各种任务相互堵塞的问题。可以通过创建不同是的SerialExecutor实例来达到各业务各自串行。

在Kotlin环境下,我们可以利用协程和Channel来实现:

添加Log编写测试如下:

执行结果:

第一个任务可以顺利通过send(), 而随后的任务被suspend, 直到前面的任务执行完(执行block),调用recevie(), 然后下一个任务通过send() ……依此类推。 最终,消耗4s完成任务。

如果Channel的参数改成2,则能有两个任务可以通过send() :

最终,消耗2s完成任务。

关于参数可以参考Channel的构造函数:

在前面的实现中, 我们关注UNLIMITED, BUFFERED 以及 capacity > 0 的情况即可:

不过, []本身有并发限制(目前版本是64), 所有对于 和 capacity > 64 的情况,和capacity=64的情况是相同的。 我们可以为不同的业务创建不同的Channel实例,从而各自控制并发且最终在协程的线程池上执行任务。 简要示意图如下:

为了简化,我们假设Dispatchers的并发限制为4。

通过Channel可以实现并发的控制,但是日常开发中有的地方并不是简单地执行个任务,而是需要一个ExecutorService或者Executor。 我们可以通过Channel封装一下:

需要简单地控制并发的地方,直接定义Channel然后调用runBlock即可; 需要Executor的地方,可创建ChannelExecutor来执行。

2023年新篇章,《Android开发进阶指北》完整版PDF开源!

2023即将到来,这也是我在阿里工作的第五个年头了。 深耕Android领域至今,我深知技术改革和创新的方向,Android开发以其美观、快速、高效、开放等优势迅速俘获人心,但很多Android兴趣爱好者所需的进阶学习资料确实不太系统,完整。 这篇文章就是我最新整理的关于Android进阶的一些知识总结,涉及到的知识面非常宽,但都是面试中几乎常问的知识点,和加分项。 在这个知识付费的时代,知识技能提升才是是根本!这里我就将这份学习资料分享出来,希望可以帮助到有需要的人。 以下是我花费两个月整理的移动开发架构师全套学习资料,各位请收好!完整版PDF可点击下方卡片查看获取方式!全套Android系列学习笔记架构师筑基必备技能深入理解Java泛型注解深入浅出并发编程数据传输与序列化Java虚拟机原理高效IOAndroid百大框架源码解析Retrofit2.0源码解析Okhttp3源码解析ButterKnife源码解析MPAndroidChart源码解析Glide源码解析Leakcanary源码解析Universal-lmage-Loader源码解析EventBus3.0源码解析zxing源码分析Picasso源码解析LottieAndroid使用详解及源码解析Fresco源码分析——图片加载流程Android性能优化实战解析 开发一款APP的本质的目的是服务用户,那么在功能强大的基础上,哪一款APP的性能更稳定、体验效果更佳就成了用户选择的首要因素。 性能优化是一个持续的过程,也是Android开发工程师进阶之路必不可少的一项技能。 这部分我将从一线互联网大厂的实战案例出发,解析性能优化,从实战中找问题,解决问题,熟悉常见性能优化问题。 腾讯Bugly:对字符串匹配算法的一点理解爱奇艺:安卓APP崩溃捕获方案——xCrash字节跳动:深入理解Gradle框架之一:Plugin,Extension,buildSrc网络APP技术:AndroidH5首屏优化实践支付宝客户端架构解析:Android客户端启动速度优化之「废品回收」携程:从智行Android项目看组件化架构实践网易新闻构建优化:如何让你的构建速度“势如闪电”?高级Kotlin强化实战 Kotlin作为一种新式的函数式编程语言有着更安全、更简洁、可通用、互操作性等诸多优点,不管用于Android开发,还是Java开发,都能缩减很大的代码量,极大地提高工作效率。 目前有很多公司也已放弃Java改用Kotlin,并在招聘中均有对Kotlin语言有较高的要求,Kotlin的上升势头不容置疑!Kotlin入门教程Kotlin实战避坑指南项目实战《KotlinJetpack实战》从一个膜拜大神的Demo开始Kotlin写Gradle脚本是一种什么体验?Kotlin编程的三重境界Kotlin高阶函数Kotlin泛型Kotlin扩展Kotlin委托协程“不为人知”的调试技巧图解协程:suspendAndroid高级UI开源框架进阶解密SmartRefreshLayout的使用Android之PullToRefresh控件源码解析Android-PullToRefresh下拉刷新库基本用法LoadSir-高效易用的加载反馈页管理框架Android通用LoadingView加载框架详解MPAndroidChart实现LineChart(折线图)hellocharts-android使用指南SmartTable使用指南开源项目android-uitableview介绍ExcelPanel使用指南Android开源项目SlidingMenu深切解析MaterialDrawer使用指南NDK模块开发NDK模块开发JNI模块Native开发工具Linux编程底层图片处理音视频开发机器学Flutter技术进阶 Flutter全家桶学习资料包含Flutter技术解析与实战、Flutter进阶学习笔记、Flutter入门与实战和Flutter完整开发实战详解。 《Flutter技术解析与实战》《Flutter进阶学习笔记》第一章为什么Flutter是跨平台开发的终极之选第二章在Windows上搭建Flutter开发环境第三章编写您的第一个FlutterApp第四章Flutter开发环境搭建和调试第五章Dart语法篇第六章Flutter中的widget《Flutter入门与实战》第一章、Flutter基本功能第二章、Flutter路由管理第三章、Flutter网络请求插件Dio第四章、Flutter状态管理第五章、Flutter动画《Flutter完整开发实战详解》微信小程序开发小程序概述及入门小程序UI开发API操作购物商场项目实战 以上八大模块知识点,每部分都为大家整理了详细的资料(PDF版本可点击卡片领取)内涵入门指南与实战详解,非常详尽全面,可陪伴各位从筑基到精进,步入中高级开发的殿堂。 全套Android学习资料【PDF文档+视频】可点击下方卡片免费领取面试题大全+视频资料面试题大全 《2022Android中高级面试必知必会》内含近年来各个大厂的面试真题 有基础较好,想简化复习的伙伴也可领取这份《Android面试大厂必考174题》视频资料 一、面试合集 二、源码解析 三、开源框架 注:资料是持续更新的,人生的每个阶段都是可以学习,运用好本站学习资源,将改变你人生轨迹,跑在同龄人的前方! 最后,希望文中的Android全套学习资料能够对大家有所帮助,助力大家更好地备战金九银十,拿到心仪offer,顺利升职加薪!

给入门开发者的一份资料,Android八大模块,帮你掌握移动...

万事开头难!许多人心急手却慢,找不到突破的出口,时常陷入焦虑。 但只要迈出第一步,就成功了一半。 无论在如何领域,都要讲究系统的学习方法。 Android相关的所有内容共分为8大模块、729个知识点,覆盖当下所有互联网大厂最看重的知识及行业前沿的技术点,学会这八大模块,就代表基本掌握了Android开发的各个知识点!! (如果你正苦于寻找进阶之路,那么可以点击收藏这份笔记,或点击下方卡片领取pdf完整版)目录一、架构师筑基必备技能 1.深入理解Java泛型 2.注解深入浅出 3.并发编程 4.数据传输与序列化 虚拟机原理 6.高效IO二、Android百大框架源码解析 2.0源码解析 3源码解析 源码解析 源码解析 源码解析 源码解析 -lmage-Loader源码解析 3.0源码解析 源码分析 源码解析 使用详解及源码解析 源码分析——图片加载流程三、Android性能优化实战解析 1.腾讯Bugly:对字符串匹配算法的一点理解 2.爱奇艺:安卓APP崩溃捕获方案——xCrash 3.字节跳动:深入理解Gradle框架之一:Plugin,Extension,buildSrc 4.网络APP技术:AndroidH5首屏优化实践 5.支付宝客户端架构解析:Android客户端启动速度优化之「废品回收」 6.携程:从智行Android项目看组件化架构实践 7.网易新闻构建优化:如何让你的构建速度“势如闪电”?四、高级kotlin强化实战 入门教程 实战避坑指南 3.项目实战《KotlinJetpack实战》从一个膜拜大神的Demo开始Kotlin写Gradle脚本是一种什么体验?Kotlin编程的三重境界Kotlin高阶函数Kotlin泛型Kotlin扩展Kotlin委托协程“不为人知”的调试技巧图解协程:suspend五、Android高级UI开源框架进阶解密 的使用 之PullToRefresh控件源码解析 -PullToRefresh下拉刷新库基本用法 -高效易用的加载反馈页管理框架 通用LoadingView加载框架详解 实现LineChart(折线图) -android使用指南 使用指南 9.开源项目android-uitableview介绍 使用指南 开源项目SlidingMenu深切解析 使用指南六、NDK模块开发 模块开发 模块 开发工具 编程 5.底层图片处理 6.音视频开发 7.机器学七、Flutter技术进阶 跨平台开发概述 中Flutter开发环境搭建 3.编写你的第一个FlutterAPP 开发环境搭建和调试 语法篇之基础语法(一) 语法篇之集合的使用与源码解析(二) 语法篇之集合操作符函数与源码分析(三)八、微信小程序开发 1.小程序概述及入门 2.小程序UI开发 操作 4.购物商场项目实战 由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要《Android八大模块进阶资料》完整文档的可以点击下方卡片免费领取附全套视频资料: 一、面试合集 二、源码解析合集 三、开源框架合集最后 以上资料均免费分享,希望能够帮助一些在这个行业发展迷茫的,或者想系统深入提升以及困于瓶颈的朋友,在网上博客论坛等地方少花些时间找资料,把有限的时间,真正花在学习上。 也祝愿每位在这个行业内深耕的人能够成功进阶,升职加薪,万事顺遂!!

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

掌握 Kotlin 协程:在 Android 和后端开发中实现轻量级并发 (掌握控制网瘾的新药包括) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
欢迎你第一次访问网站!