gpt4 book ai didi

multithreading - 在 Kotlin 中使用线程还是协程更好?

转载 作者:行者123 更新时间:2023-12-02 21:52:14 24 4
gpt4 key购买 nike

我正在从应用程序发送邮件。由于邮件发送需要时间并阻塞主线程,因此我正在创建一个新线程并将邮件发送任务移交给新线程。对于发送邮件的大量并发请求,我必须创建大量线程。但创建线程似乎很慢。

我的问题是,如果我使用 Kotlin 的协程,它是否能提供比线程更好的性能?

某种解释或提示非常值得赞赏。

最佳答案

TL;DR - 在 Kotlin 中工作时始终使用协程

线程具有相对较大的内存占用 - 每个线程大约有 1MB 的 VM 内存。如果为每个任务创建一个线程,则可能会面临内存不足的风险。相比之下,协程相对较小,仅占用几 KB 的虚拟机内存。

新线程的创建相对较慢,因为它要经过操作系统。操作系统对协程一无所知,因此生成一个新的协程相对较快。

出于同样的原因,线程之间的上下文切换比挂起的协程之间的上下文切换要昂贵得多。

此外,协程不太容易发生泄漏,这要归功于 structured concurrency

关于multithreading - 在 Kotlin 中使用线程还是协程更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58254985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com