Java 中的线程是和操作系统的内核线程一一对应的。 操作系统的内核线程的缺点: 慢:上下文切换费事(1000 个时钟周期) 调度时需要发起系统调用,在内核态和用户态之间转换 大:独立的方法栈需要更多的空间 协程:在单线里实现多任务的调度,并在单线程里维持多个任务间的切换 协程的优点: 快:始终占用 CPU,在用户态小:可以方便地实现上百万地并发度 JVM 的线程占用 < 1MGo 的协程 goroutine 4KB 注意:协程并没有解决多线程并发的任何问题