当前位置: 首页 > news >正文

顺德网站建设哪家好优化建站

顺德网站建设哪家好,优化建站,贵州做网站,微软雅黑做网站会涉及到侵权吗Kotlin协程,好用,但是上限挺高的,我一直感觉自己就处于会用,知其然不知其所以然的地步。 做点小总结,比较浅显。后面自己再继续补充吧。 一、什么是协程? Kotlin 协程是一种轻量级的并发编程方式&#x…

Kotlin协程,好用,但是上限挺高的,我一直感觉自己就处于会用,知其然不知其所以然的地步。

做点小总结,比较浅显。后面自己再继续补充吧。

一、什么是协程?

Kotlin 协程是一种轻量级的并发编程方式,用于简化异步代码的编写。它允许你编写看似同步的代码来处理异步任务,使代码更加简洁、可读且易于维护。协程广泛应用于 Android 开发中,用于网络请求、数据库操作等需要异步执行的任务。

  • 协程是一种语法糖 协程的出现是来解决异步问题的,但它本身却不提供异步的能力,协程某种意义上更像是一种语法糖,它为我们隐藏了异步调用和回调的细节,让我们更关注于业务逻辑的实现。
  • 一句话概括,协程是一种轻量级的方便操作异步代码的语法糖,而它本身不提供异步能力。

二、Kotlin 协程的核心概念

  • 协程 (Coroutine):一种轻量级的线程。协程可以在不阻塞主线程的情况下挂起和恢复,使得代码能够异步执行而不增加线程开销。协程在 Kotlin 中由 suspend 函数来支持,避免回调地狱的情况。

  • 挂起函数 (suspend function):使用 suspend 关键字修饰的函数,可以在协程中挂起。挂起函数不会阻塞线程,而是挂起当前协程,直到任务完成后再继续执行。例如:

suspend fun fetchData(): String {// 模拟网络请求delay(1000)  // 挂起 1 秒,不会阻塞线程return "Data fetched"
}
  • 挂起 (Suspend) 和恢复 (Resume):当协程执行到 delaywithContext 等挂起函数时,它会暂停执行并释放资源,一旦挂起函数完成任务,协程会恢复执行。这种机制使得协程能够在同一线程上无缝切换,从而提高性能。

  • 作用域 (CoroutineScope):协程作用域定义了协程的生命周期。常见的协程作用域有 GlobalScopeCoroutineScopeviewModelScopelifecycleScope,它们决定了协程的启动与取消。作用域有助于自动管理协程,确保在不再需要协程时取消它,避免资源泄漏。

  • 上下文 (CoroutineContext):协程的上下文包含了协程的调度器(比如 Dispatchers.MainDispatchers.IO)和其他信息。上下文指定了协程在哪个线程或线程池上执行,调度器为协程提供执行环境。

三、协程的特点

  • 轻量

    • 一个线程中可以包含多个协程,协程支持挂起,不会让正在运行协程的线程阻塞,与阻塞线程相比,挂起协程的操作更轻量
  • 内存泄漏更少
    • 协程使用了结构化并发机制,可以在一个作用域内执行多个操作,可以一次性全部取消掉,这样就不用像 RxJava 一样要自己把 Disposable 放在 CompositeDisposable 里
  • 内置取消支持
    • 当我们取消一个协程时,取消操作会在运行中的整个协程层次结构内传播,也就是父协程取消后,子协程也会被取消
  • Jetpack支持
    • 集成 Jetpack 中的 ViewModel 、Lifecycle 和 LiveData 都提供了对应的协程作用域
  • Kotlin 协程框架中的挂起函数有另外一个好处,就是可以在编译时就让方法的调用方知道这是一个耗时的操作,需要确定这个操作要放在哪个线程执行,这样就不用像 Android 框架对主线程网络请求的禁止方式一样,在运行时才抛出异常。

四、协程和线程的区别

(1)协程是编译器级别的,线程是系统级别的。协程的切换是由程序来控制的,线程的切换是由操作系统来控制的。

(2)协程是协作式的,线程是抢占式的。协程是由程序来控制什么时候进行切换的,而线程是有操作系统来决定线程之间的切换的。

(3)一个线程可以包含多个协程。

(4)Java中,多线程可以充分利用多核cpu,协程是在一个线程中执行。

(5)协程适合io密集型的程序,多线程适合计算密集型的程序(适用于多核cpu的情况)。当你的程序大部分是文件读写操作或者网络请求操作的时候,这时你应该首选协程而不是多线程,首先这些操作大部分不是利用cpu进行计算而是等待数据的读写,其次因为协程执行效率较高,子程序切换不是线程切换,是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。

(6)使用协程可以顺序调用异步代码,避免回调地狱。

五、协程的使用

Kotlin 提供了丰富的协程构建器,如 launchasync,分别用于启动协程并发任务。

1. launch

launch 是一种最常用的协程构建器,用于启动一个新协程,并且不会阻塞主线程。它的返回值是 Job,可以用于取消协程。

GlobalScope.launch {val result = fetchData()println(result)
}
2. async

async 用于并发执行多个任务,适合需要返回结果的情况。它的返回值是 Deferred,可以通过 await() 来获取执行结果。

CoroutineScope(Dispatchers.Main).launch {val result1 = async { fetchData() }val result2 = async { fetchData() }println(result1.await() + result2.await())
}

六、Job的使用

我们在使用launch的时候,就启动了一个协程,launch方法会返回一个job。

1.使用job.cancel()取消一个协程

fun main() {val job = GlobalScope.launch {delay(1000L)println("World!")}job.cancel()println("Hello,")}

因为协程被取消了,所以只会打印Hello。

2、join()等待协程执行完毕

作用类似于Thread.join()函数,join()后面的代码会等到协程结束再执行,结果如下:

fun main() = runBlocking {val job = GlobalScope.launch {delay(1000L)println("World!")delay(1000L)}println("Hello,")job.join() println("Good!")
}//依次打印
Hello,
World!
Good!

七、 其他注意事项

在Activity或Fragment中使用协程时,要尽量避免使用GlobalScope,因为GlobalScope是生命周期是process级别的,所以上面的例子中,即使Activity或Fragment已经被销毁,协程仍然在执行。

建议使用具有生命周期协程LifecycleScope。

关于kotlin相关的同步,异步,回调,阻塞,这篇文章很生动:

https://juejin.cn/post/7373502637729513506icon-default.png?t=O83Ahttps://juejin.cn/post/7373502637729513506retrofit搭配协程

https://juejin.cn/post/6962921891501703175icon-default.png?t=O83Ahttps://juejin.cn/post/6962921891501703175emmm...感觉写的很浅,还有很多知识点没有概括到,后面补充

http://www.ds6.com.cn/news/48533.html

相关文章:

  • 网站默认图外贸网站营销推广
  • 模板网站建站aso平台
  • 更合高明网站建设关键词排名优化工具有用吗
  • 网站建设公司招聘优秀网站网页设计分析
  • 微网站用什么软件做百度快照的作用是什么
  • wordpress n点资讯主题seo文章代写平台
  • 网站开发+兼职项目谷歌sem
  • 天津做网站seo的湖南网络推广机构
  • 商业规划设计公司单页网站怎么优化
  • 腾讯云主机做网站最好的seo外包
  • 网站建设费用表知乎关键词排名优化工具
  • b2c网站策划书高州网站seo
  • 资讯网站做app一键搭建网站
  • 哪个网站做推销产品全球疫情最新数据统计
  • 免费广州网站开发维护万能的搜索引擎
  • 宁波正规网站建设使用方法百度爱采购
  • 怎么做一家网站河北百度推广电话
  • 微信公众号平台官网客服电话优化大师使用心得
  • 黄岩网站开发百度关键词热度排名
  • 做网站网页尺寸是多少钱武汉网站建设公司
  • 高端的佛山网站建设3天网站seo优化成为超级品牌
  • 网站建设而深圳seo外包
  • 淄博网站关系网站优化公司
  • 黑龙江网站建设seo优化百度竞价可以自学吗
  • 联盟网营销网站seo推广
  • 如何做中国古城的网站怎么做电商生意
  • 山西省住房和城乡建设厅网站报名百度问一问免费咨询
  • 郑州做网站公司排建站平台如何隐藏技术支持
  • 一个公司网站备案正规的关键词优化软件
  • 网上商城用wordpresswindows优化大师手机版