关于Kotlin Thread与协程的并发特性及多核CPU使用的疑问
Kotlin线程与协程的并发/并行疑问解答
问题1:Kotlin中的线程与协程是否均属于并发机制?
是的,两者都属于并发机制:
- 线程是操作系统原生的并发实现,由内核调度,属于内核态并发,哪怕是单核CPU,也能通过时间分片让多个线程交替执行,达成并发效果。
- 协程是Kotlin提供的用户态并发工具,运行在线程之上,由Kotlin协程调度器管理,不需要内核参与调度,开销更低,同样能实现多任务交替执行,满足并发需求。
问题2:当CPU具备多核时,Kotlin的Thread是否仅会使用单个核心?
不会。Kotlin的Thread本质就是Java的Thread,而Java线程会直接映射为操作系统的原生线程。当CPU有多核时,操作系统调度器会自动把不同的Kotlin/Java线程分配到不同核心上运行,完全可以利用多核CPU的能力实现并行执行。你提到的Java Stream的parallel或者pmap是实现并行的便捷工具,但线程本身就具备利用多核的能力,并非只能局限在单个核心。
内容的提问来源于stack exchange,提问作者sh1220
相关产品推荐
相关产品推荐

