Kotlin协程====> 入门基础使用1
协程(kotlinx.coroutines )是由 JetBrains 开发的功能丰富的协程库。它包含Kotlin很多启用高级协程的原语,包括 launch、 async 等等。Kotlin Maven引入<dependency><groupId>org.jetbrains.kotlinx</groupId><artifactId>kotlinx-c
·
协程(kotlinx.coroutines )是由 JetBrains 开发的功能丰富的协程库。它包含Kotlin很多启用高级协程的原语,包括 launch、 async 等等。
Kotlin Maven引入
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-core</artifactId>
<version>1.4.1</version>
</dependency>
Kotlin Anroid Gradle 引入
- 在父类中的build.gradle引入
repository {
jcenter()
}
- 在app中的build.gradle引入
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-core</artifactId>
<version>1.4.1</version>
</dependency>
- Kotlin第一个程序
在 GlobalScope 中启动了一个新的协程,这表示新协程的生命周期只受整个应用程序的生命周期限制。
delay 是一个特殊的 挂起函数 ,它不会造成线程阻塞,但是会 挂起 协程,并且只能在协程中使用。
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
fun main() {
GlobalScope.launch {//后台启动一个新的协程并启动
delay(1000)
println("========>Hello,coroutines")
}
println("Hello")// 主线程中的代码会立即执行
runBlocking {// ===》这个表达式阻塞了主线程
delay(2000) //延迟 2 秒来保证 JVM 的存活
}
}
这里用了 非阻塞的 delay(……) 与 阻塞的 Thread.sleep(……)。 这容易让我们记混哪个是阻塞的、哪个是非阻塞的
4.Kotlin主协程
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
fun main() = runBlocking {// 开始执行主协程
GlobalScope.launch { // 在后台启动一个新的协程并继续
delay(1000L)
println("World!")
}
println("Hello,") // 主协程在这里会立即执行
delay(2000L) // 延迟 2 秒来保证 JVM 存活
}
这里 调用了 runBlocking 的主线程会一直 阻塞 直到 runBlocking 内部的协程执行完毕。
- 参考资料:Kotlin中文网站 http://www.kotlincn.net/docs/reference/coroutines/basics.html
更多推荐
所有评论(0)