【Kotlin】协程(一)

1.1 What 协程

在学习 Kotlin 过程中,避免不了对协程的学习。但是协程这个概念并不是由Kotlin 率先提出的,资料记载 1963 年就提出了协程的概念。人们通常那线程和协程做对比,很多人都说协程是一个轻量级的线程,这种说法很容易让人理解,但是却又有点难理解。因为在我的认知中线程已经是操作系统能够调度的最小运行单位了。咋还能有一个比线程更小的东西存在?因为协程并不是操作系统控制,而是应用本身控制。是开发语言级别的调度。这里关于协程的理解可以参考扔物线的协程视频,里面介绍的很详细。

1.2 How 协程

在 Kotlin 代码中,我们只需要调用GlobalScope.luanch{},即可启动一个协程,下面是一个简单的例子

import kotlinx.coroutines.GlobalScope //引包
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

fun main() {
    GlobalScope.launch { // 启动一个协程
        delay(1000L) // 延迟 1 秒
        println("coroutines") // 输出
    }
    println("main") //输出
    Thread.sleep(2000L) //延迟两秒,阻塞式的,确保协程中的方法执行
}

上述代码已经开启了一个协程,输出的结果为

main
coroutines

可以看到协程中的方法是在主线程输出之后执行的,协程的创建并不会导致主线程的阻塞。

这里只是简单的创建协程可使用。后续我们再详细说明协程的其他使用方法

注意:

如果在 IDEA 中引包没有协程的包,需要将协程的包添加到当前项目,打开项目设置窗口,按照下面图示添加即可。

添加依赖

1.3 Why 协程

在上面例子中,我们改造一下,重复创建 1000个协程,并且输出 hello,

import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

fun main() {
    runBlocking { //阻塞主线程(后续介绍)
        repeat(10000) {
            launch {
                println("Hello")
            }
        }
    }
}

如果换成 Java 线程的方式,创建如此多的线程是消耗资源的,甚至可能造成OOM,当然如今的电脑配置很强,可能触发不了 OOM,而在协程中,这里只创建了一个主线程,其他协程都是运行在主线程中的,没有线程的开销。从原理上我们就可以分析出来,协程在这方面还是有这不错的优越性的。毕竟 Java 现在也支持协程了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0neXiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值