Kotlin:协程基础

第一个协程程序
复制代码
import kotlinx.coroutines.*

fun main(){
    GlobalScope.launch {
        delay(1000L)//delay 是一个特殊的 挂起函数 ,它不会造成线程阻塞,但是会 挂起 协程,并且只能在协程中使用。
        println("World!")
    }
    println("Hello - ")// 主线程中的代码会立即执行
    Thread.sleep(2000L) // 阻塞主线程 2 秒钟来保证 JVM 存活

//    runBlocking {//但是这个表达式阻塞了主线程
//        delay(2000L)//我们延迟 2 秒来保证 JVM 的存活
//    }
}

本质上,协程是轻量级的线程。 它们在某些 CoroutineScope 上下文中与 launch 协程构建器 一起启动。 这里我们在 GlobalScope 中启动了一个新的协程,这意味着新协程的生命周期只受整个应用程序的生命周期限制。

可以将 GlobalScope.launch { ...... } 替换为 thread { ...... },并将 delay(......) 替换为 Thread.sleep(......) 达到同样目的。 试试看(不要忘记导入 kotlin.concurrent.thread)。

如果你首先将 GlobalScope.launch 替换为 thread,编译器会报以下错误:

Error: Kotlin: Suspend functions are only allowed to be called from a coroutine or another suspend function

这是因为 delay 是一个特殊的 挂起函数 ,它不会造成线程阻塞,但是会 挂起 协程,并且只能在协程中使用。

相关推荐
云和数据.ChenGuang几秒前
python 面向对象基础入门
开发语言·前端·python·django·flask
空空空空空空空空空空空空如也1 分钟前
QT通过编译宏区分x86 linux arm的方法
linux·开发语言·qt
独自破碎E3 分钟前
【BISHI11】变幻莫测
android·java·开发语言
Gavin在路上4 分钟前
SpringAIAlibaba之短期记忆与长期记忆实现原理(十一)
开发语言·人工智能
符哥20084 分钟前
Android 开发中如何使用Coroutines
android·kotlin
m0_706653235 分钟前
C++中的解释器模式
开发语言·c++·算法
We་ct8 分钟前
LeetCode 202. 快乐数:题解+思路拆解
前端·算法·leetcode·typescript
lsx2024068 分钟前
命令模式:深入理解与实战应用
开发语言
应用市场9 分钟前
踩坑记录:有符号整数位运算的那些隐蔽Bug——符号扩展、算术右移与补码
java·开发语言·bug
多打代码9 分钟前
2026.02.01 n皇后 & 解数独
开发语言·python