kotlin 挂起函数

测试下挂起函数:

Kotlin 复制代码
// 1. 定义挂起函数(用suspend关键字修饰)
suspend fun suspendFunction(name: String, delayTime: Long) {
    Log.d("zxzx", "[$name] 挂起函数开始执行,当前线程:${Thread.currentThread().name}")

    // delay是Kotlin内置的挂起函数(核心:释放线程,不阻塞)
    delay(delayTime)

    Log.d("zxzx", "[$name] 挂起函数执行完毕,当前线程:${Thread.currentThread().name}")
}

// 2. 测试函数(Android环境可放在Activity/Fragment中,普通测试用main函数)
fun testSuspend() {
    Log.d("zxzx", "主线程开始,当前线程:${Thread.currentThread().name}")

    // 错误示例:普通函数中直接调用挂起函数 → 编译报错!
    // suspendFunction("错误测试", 1000L) // 编译提示:Suspend function 'suspendFunction' should be called only from a coroutine or another suspend function

    // 正确方式1:在runBlocking(协程作用域)中调用
    runBlocking {
        // 启动子协程调用挂起函数
        launch(Dispatchers.IO) {
            suspendFunction("测试1", 2000L)
        }
        launch(Dispatchers.Default) {
            suspendFunction("测试2", 1000L)
        }
    }

    // 正确方式2:Android中用lifecycleScope(推荐)
    // lifecycleScope.launch {
    //     suspendFunction("Android测试", 1500L)
    // }

    Log.d("zxzx", "主线程继续执行,当前线程:${Thread.currentThread().name}")
    Log.d("zxzx", "力拔山兮气盖世,\n时不利兮骓不逝。\n骓不逝兮可奈何,\n虞兮虞兮奈若何!")
}

在onCreate函数中调用testSuspend函数,打印:

ok. 这里好像没看出挂起有什么用。后面再继续研究。

相关推荐
带娃的IT创业者4 小时前
Python 异步编程完全指南:从入门到精通
服务器·开发语言·python·最佳实践·asyncio·异步编程
一只鹿鹿鹿6 小时前
信息安全等级保护安全建设防护解决方案(总体资料)
运维·开发语言·数据库·面试·职场和发展
喵叔哟6 小时前
9. 【Blazor全栈开发实战指南】--Blazor调用JavaScript
开发语言·javascript·udp
wuqingshun3141596 小时前
如何停止一个正在退出的线程
java·开发语言·jvm
我命由我123456 小时前
Element Plus - Form 的 resetField 方法观察记录
开发语言·前端·javascript·vue.js·html·html5·js
朱包林6 小时前
Python基础
linux·开发语言·ide·python·visualstudio·github·visual studio
Barkamin7 小时前
队列的实现(Java)
java·开发语言
一只特立独行的Yang7 小时前
Android graphics - 框架摘要
android
hixiong1237 小时前
C# OpenvinoSharp使用RAD进行缺陷检测
开发语言·人工智能·c#·openvino
小浪花a7 小时前
计算机二级python-jieba库
开发语言·python