协程与线程类似,都可以处理并发任务。协程在很多语言中都支持,但 Java 中并没有协程,而 kotlin 中是支持协程编程。
什么是协程?
协程是一种轻量级的线程,协程提供了一种不阻塞线程但是可以被挂起的计算过程。线程阻塞的开销是巨大的,而协程挂起基本上没有开销。
在执行阻塞任务时,会将这种任务放到子线程中执行,执行完成回调主线程、更新UI,这就是异步编程。协程底层库也是异步处理阻塞任务,但是这些复杂的操作被底层库封装起来,协程代码的程序流是顺序的,不再需要一堆回调函数,就像同步代码一样,也便于理解、调试和开发。
线程是抢占式的,线程调度是操作系统级的,而协程是协作式的,协程调度是用户级的。协程是用户空间线程,与操作系统无关,所以需要用户自己去做调度。
网友评论